0

根据上一次 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) ->

但这也是错误的......我应该使用什么?“开”或“委托”

4

2 回答 2

3

如果您要附加一个元素,它最初不在 dom 中,但一旦附加,以下内容适用

$('body').on('click','#tags.tab-pane.active #tag-list li', function(e){
  //carry out function
}); 
于 2013-01-23T18:41:40.870 回答
2

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

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

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

使用“on”来表示您如何使用 live 的等效实现是:

$(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(){...})
于 2013-01-23T18:38:42.630 回答