2

我正在开发一个用户能够执行一些实时搜索功能的项目。当通过 JQuery Ajax 显示实时搜索的结果时,我需要用户能够单击其中一个显示的结果并在页面的其他位置创建该结果的克隆。我发现的问题是,由于这些新的实时搜索结果没有在第一页加载时处理,我认为它们是 DOM 不存在的“幻像代码”。我对 JQuery 的 on() 和 bind() 函数进行了一些研究,但不确定如何将它们实现到我自己的上下文中。

这是我的 jQuery

$(".add").click(function() {
        $(this).parent("li").clone(true).appendTo(".doc_list:first");                       

});

在那个片段中(this)是指我的按钮,它存在于通过实时搜索结果动态创建的 LI 元素(父元素)内。我需要复制那个 LI 元素。

如果需要更多代码,请告诉我。

4

2 回答 2

3

当您的.add按钮在页面加载后添加到 DOM 时,即。动态的,所以你需要一个委托事件处理程序(又名实时)。

$(".doc_list").on('click', '.add', function() {
    $(this).parent("li").clone(true).appendTo(".doc_list:first");
});

在这里,我将用户.doc_list用作容器,但如果.doc_list也是动态元素,则在页面加载时将其替换为属于 DOM 的其他静态元素。

于 2012-06-07T16:30:55.107 回答
1
$("Static-container").on('click', '.add', function() {
        $(this).parent("li").clone(true).appendTo(".doc_list:first");                       
});

WhereStatic-container是包含所有动态添加.add元素的最近元素的选择器。

于 2012-06-07T16:32:58.840 回答