jQuery 1.9 .live()已删除....我的脚本不再工作了

时间:2013-01-23 18:35:27

标签: jquery

根据最后的Rails gem更新,我的jQuery v更新为1.9,这引发了关于我的.live()绑定的错误...

$('#tags.tab-pane.active #tag-list li span.myTag').live "click", (e) ->

现在错了.. 我试过了

$("#tags.tab-pane.active #tag-list li").on "click", "span.myTag", (e) ->

但也是错的......我该怎么用? “on”或“delegate”

2 个答案:

答案 0 :(得分:3)

如果你追加一个元素,它原来不在dom中,但一旦被附加,下面适用

$('body').on('click','#tags.tab-pane.active #tag-list li', function(e){
  //carry out function
}); 

答案 1 :(得分:2)

live已被弃用一段时间,不再受支持。您必须使用“on”http://api.jquery.com/on/

$("#tags.tab-pane.active #tag-list li").on("click", "span.myTag", (e) -//NOT WORKING

为了使其工作,当执行此代码时,“li”元素必须存在于dom中,以便事件可以绑定到它。

使用“on”进行实时使用的等效实现将是:

$(document).on('click','#tags.tab-pane.active #tag-list li span.myTag',function(){...})

你应该尝试使用“更好或更深的dom”选择器来绑定事件而不是文档,这样事件就不必每次都在dom上一直冒泡。请记住,绑定事件时,替换文档的选择器必须存在,否则它将无效。

如果您可以弄清楚如何在元素位于dom之后执行绑定事件的代码,那么您可以直接在元素上绑定事件:

$('#tags.tab-pane.active #tag-list li span.myTag').on('click',function(){})

相当于:

$('#tags.tab-pane.active #tag-list li span.myTag').click(function(){...})