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

それが機能するためには、このコードが実行されるときに「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(){...})
于 2013-01-23T18:38:42.630 に答える