setInterval阻止点击处理程序触发

时间:2013-08-03 00:09:16

标签: jquery hyperlink setinterval

这是我的代码示例。我使用'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);
});

1 个答案:

答案 0 :(得分:1)

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

您需要使用委托

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

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

});

jQuery documentation

中详细了解代表