-1

我有一个代码片段,它运行一个 ajax 请求到另一个脚本,并<li>在每次单击更多按钮时附加新的 s。

我正在使用以下代码:

$(function(){
$('.more').on("click",function(){
    var ID = $(this).attr("id");
    if(ID){
        $("#more"+ID).html('<img src="moreajax.gif" />');

        $.ajax({
            type: "POST",
            url: "/cs_directory/helpers/jpost_load_post.php",
            data: "lastmsg="+ ID, 
            cache: false,
            success: function(html){
                $("ul#existing_campaign").append(html);
                $("#more"+ID).remove(); // removing old more button

            }
        });
    }else{
        $(".morebox").html('The End');// no results
    }

    return false;
});
});

我正在添加#more 按钮以及来自我的网址的返回。

但是,因为它是在加载文档后附加的。我的功能似乎不再适用了。我该如何更改它,以便每次单击它时,更多按钮都会递归地起作用?

4

1 回答 1

2

您需要将事件委托给动态添加的元素的父级

$(document).on("click",'.more', function(){
      //your code
});

委托事件的优点是它们可以处理来自以后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要,参考.

于 2013-09-26T09:06:05.613 回答