用 .on 替换弃用的 .live

Replacing deprecated .live with .on

我正在使用 jsfiddle 中的一些现有代码,但它使用的是已弃用的 .live 函数。当我更改代码以使用 .on 时,它不再有效。这是 jsfiddle:http://jsfiddle.net/DBfKz/

脚本将项目添加到 "compare list"。我想要做的是点击一个旁边的 "x",从列表中删除。

这是已弃用的代码:

$(".box a").live("click", function() {
    $(this).parent().remove();
    updateLinkAndCounter();
});

我把它转换成这样:

$(".box").on("click","a", function() {
    $(this).parent().remove();
    updateLinkAndCounter();
});

我把jQuery的版本改成更新的版本,支持.on

但现在脚本不起作用。我之前成功使用过 .on,只是不知道为什么它在这里不起作用。感谢您提供的所有帮助!

问题是 .box 元素是在 dom 准备好之后创建的,因此该元素不存在,无法将事件附加到该元素。

您需要将事件处理程序添加到已存在的元素。

http://jsfiddle.net/DBfKz/72/

我将您的活动更改为:

$("#container").on("click", '.box a', function(e) {
    $(e.target).parent().remove();
    updateLinkAndCounter();
});

还将您的 jQuery 版本从 1.4.4 更改为 1.8.3

现在的工作方式相同。