on()方法不适用于动态生成的HTML

时间:2013-03-12 14:35:31

标签: javascript jquery

我正在向表格动态添加表格行(tr),这些tr代码包含一些链接。

我有一个jQuery脚本,当点击tr中的链接时调用该脚本。 该脚本不适用于这些链接。它在我重新加载页面时起作用,并且从服务器端填充tr

我该如何克服这个问题?

$(".comment-like").on('click',function() {
    var spanEle = $(this).closest('li').find('.comment-like-count');
    if (spanEle.length) {
        var newCount = parseInt(spanEle.text(),10);
        spanEle.text(newCount + 1);
    }
});

4 个答案:

答案 0 :(得分:3)

您应该delegate the listener to a parent喜欢表格而不是链接本身 因为它们来来去去 试试这个:

$('your table selector').on('click','.comment-like', function () {
    var spanEle = $(this).closest('li').find('.comment-like-count');
    if (spanEle.length) {
        var newCount = parseInt(spanEle.text(), 10);
        spanEle.text(newCount + 1);
    }
});

答案 1 :(得分:0)

我认为你想改用delegate

答案 2 :(得分:0)

选择页面加载时存在的父选择器。如果您没有,请使用$('body')

$('.elem-existing-on-pageload').on('click', '.comment-like', function() {
    ...
});

答案 3 :(得分:-2)

添加后,您必须为这些新元素附加事件处理程序。