如何在上一次 JQuery 调用后访问 DOM

How to access the DOM after a previous JQuery call

本文关键字:访问 DOM 调用 JQuery 上一次      更新时间:2023-09-26

我对JQuery不太熟悉,所以请耐心等待。

本质上,我在运行一些 JQuery 脚本的视图上有两个超链接:

     <a href='#' class="deleteCustomer">Delete</a></td>
       .
       .
     <a href="#" class="undoCustomer">Undo</a>

因此,这些链接中的每一个都访问同一.js文件的不同部分。我的"删除"执行一些处理,在数据库中执行软删除。 DOM 加载并且工作正常。我正在使用Firebug,当我插入控制台时.log在.js中我可以看到要删除的客户ID的ID,其余的很简单。

$(container).find('a.deleteCustomer:first').click(function(e) {
            console.log("CustomerId " + $(container).find('input[name=Customer_CustomerId]:first').val());

但是,我的"撤消"在不同的行和控制台上访问相同的.js.log在.js的"撤消"部分中显示它没有被击中。

$(container).find('a.undoCustomer').click(function(e) {
    console.log("CustomerId " + $(container).find('input[name=Customer_CustomerId]:first').val());

因此,DOM 似乎尚未准备就绪(? 如果是这种情况,我该如何解决这个问题? 我必须手动重新加载 DOM 吗? 如果是这样,如何?

附言当我首先单击"撤消"时,似乎没有任何反应,即我在FireBug中没有得到任何console.logs。 但是,如果我刷新浏览器,它会按预期运行,即撤消关于执行的 jquery。

没有完整的代码,很难分辨。从您的帖子,标题和评论中,我看到了两个可能的原因。

首先,你可能在 DOM 完全准备好之前运行你的代码,然后尝试将所有 javascript 初始化脚本包装在:

$(function() {
   ... // your code here
});

其次,当您单击删除时,您是否删除了"输入"?如果是这种情况,"查找"无法恢复它是正常的。在这种情况下,撤消的解决方案是隐藏"输入"并在单击"撤消"时将其显示回来。