2

私がこのようなものを持っているとしましょう:

$('#mydiv').on('click', 'button', doSomething);

明らかに、私はすべてのボタンがdoSomething()クリックされるようにしたいです。ここで、これらのボタンの1つにそれを行わせず、別のことをさせたいとしましょう。

$('#mydiv').off('click', '.specialclass button');

これは機能しませんが、必要です。これを達成する方法はありますか?各ボタンを個別に配線する必要はありません。

.off()ドキュメントのこの部分は私を殺しているものです:

特定の委任されたイベントハンドラーを削除するには、セレクター引数を指定します。セレクター文字列は、イベントハンドラーがアタッチされたときに.on()に渡されたものと正確に一致する必要があります。

これが私がやろうとしていることをデモするフィドルです。

4

1 に答える 1

4

jQuery疑似セレクター:not()を使用して検索結果を除外できます。これは、ここに記載されているドキュメントです

$('#mydiv').on('click', 'button:not(.specialclass)', doSomething);

次に、特定のケースを個別に指定できます。

$('.specialclass').on('click', function() { console.log('sup'; });

unbindを使用して、jQueryのイベントをオフにすることもできます。

$('div').unbind('click');​

ドキュメントによると、非推奨ではありませんが、次のようになります。

jQuery 1.7以降、要素のイベントハンドラーをアタッチおよび削除するには、.on()メソッドと.off()メソッドが推奨されます。

于 2012-12-20T01:35:35.787 に答える