2012-12-19 10 views
26

ボタンのように複数の要素を持つdiv要素があり、イベントハンドラがアタッチされています。ボタンのハンドラを削除するにはJquery要素内のすべてのイベントハンドラを削除する

$("#button1").off() 

が、私は、可能な場合には、このような何かをしたい:私は行くことはその可能性を知っている

$("#div1").removeChildHandlers(); 

はこれを行うにはJQueryでネイティブ関数がありますまたは私はすべての要素をループし、1を1ずつ削除する必要がありますか?

+0

を話している場合は、多分 '.find( 'ボタン')でオフ()'何を探していますか。? –

+0

いいえ具体的なものはありません – Nuvolari

+0

[すべてのjQueryイベントハンドラを削除する](http://stackoverflow.com/questions/12377854/remove-all-jquery-event-handlers) – Antony

答えて

31

jQueryのは、単に直接の子のためにあなたのためのループを行います

$("#div1 >* ").off(); 

または:

$("#div1").find('button').off(); 

あなたはおよそ<button>要素

+0

私はそれが私が探していたすべての可能性をカバーしていると思います。 – Nuvolari

+0

ありがとうございます。イベントハンドラが手動で追跡されていないかどうかを判断するのは難しいことが分かりました。すべての子孫ハンドラをオフにすると、直後に再適用することができます。パフォーマンスにはあまり良くない可能性がありますが、すばやく解決するのは素晴らしいことです! –

+0

'$("#div1 ")。子()。off()'から '$("#div1 ").off()'の主な違いは何ですか? –

3

は、このヘルプを行います。

$("#div1").children().off(); 

またはあなたがすべての子孫をしたい場合:

$("#div1").find("*").off(); 
+0

'$("#div1 ")の代わりに.find( '*') '$("#div1 * ")'を使うことができます。 – skobaljic

1

てみ

$("#div1").find('*').off(); 
関連する問題