用 .on 替换已弃用的 .live [重复]

Posted

技术标签:

【中文标题】用 .on 替换已弃用的 .live [重复]【英文标题】:Replacing deprecated .live with .on [duplicate] 【发布时间】: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 ,但我只是不知道为什么它在这里不起作用。感谢您的所有帮助!

【问题讨论】:

【参考方案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

现在也一样。

【讨论】:

非常感谢!我为此沮丧了好几个小时,解决方案非常简单。

以上是关于用 .on 替换已弃用的 .live [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在最新的 XAMPP 上运行已弃用的 php 代码 [重复]

替换 7.X 的 Atlassian JIRA 插件中已弃用的 AbstractEditHandlerDetailsWebAction

用 QuerydslJpaPredicateExecutor 替换已弃用的 QuerydslJpaRepository 失败

尝试替换已弃用的 loadnibnamed:owner

如何阻止 TinyMCE 用 span 替换已弃用的标签

用 Source.fromGraph 替换已弃用的 Source.actorPublisher - 如何限制?