0

这是我拥有的代码示例。我用“setInterval”加载新内容。它导致我的点击处理程序不触发。

ajax 调用一个名为“content.php”的文件,其中只包含以下内容:

<a class='my_link'>Something here</a>

这是我的页面:

<div id="content">
<a class='my_link'>Something here</a>
</div>
$(document).ready(function(){
$('.my_link').click(function() {
alert($(this).html()); 
return false;
});

function loadLog(){     
    var oldscrollHeight = $("#chatbox").attr("scrollHeight") - 20;
    $.ajax({
        url: "content.php",
        cache: false,
        success: function(html){        
            $("#content").html(html); //Insert chat log into the #chatbox div               
            var newscrollHeight = $("#chatbox").attr("scrollHeight") - 20;
            if(newscrollHeight > oldscrollHeight){
                $("#content").animate({ scrollTop: newscrollHeight }, 'normal'); //Autoscroll to bottom of div
            }               
        },
    });
};
setInterval (loadLog, 3000);
});
4

1 回答 1

1

由于您在$('.myLink').click(...执行后添加链接,因此它没有附加“点击”处理程序。

您将需要使用委托

$(document.body).on('click', '.my_link', function(e){

    alert($(this).html()); 
    return false;

});

在jQuery 文档中阅读有关委托的更多信息

于 2013-08-03T00:18:51.910 回答