【问题标题】:Replacing deprecated .live with .on [duplicate]用 .on 替换已弃用的 .live [重复]
【发布时间】:2015-06-25 03:03:42
【问题描述】:

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

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

这是已弃用的代码:

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

我把它转换成这个:

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

我将 jQuery 的版本更改为更新的版本,它支持 .on

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

【问题讨论】:

    标签: jquery live


    【解决方案1】:

    问题是 .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

    现在也一样。

    【讨论】:

    • 非常感谢!我为此沮丧了好几个小时,解决方案非常简单。
    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 2013-11-23
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多