2

小さな質問ですが、重要です。

. unbind('click') を実行してから、たとえば button.click(... ?

基本的に、コントロールにイベントが定義されている場合、再度アタッチする前にアタッチを解除する必要がありますか? これは、「bind()」を使用して追加したものに当てはまることを知っています...

4

1 に答える 1

2

これは、「bind()」を使用して追加したものに当てはまることを知っています...

click(func...)のショートカットですbind('click',...)。

同じハンドラーをコントロールに割り当てる場合は、再度アタッチする前に削除する必要があります。そうしないと、ハンドラーが複数回実行されます。

とにかくハンドラーへの参照がある場合は、次のことができます。

$element.unbind('click', handler);

これにより、イベント ハンドラーのみが削除さhandlerれ、他のすべてはそのまま残ります。


このコンテキストで興味深いのは、イベントの名前空間です:

複数のイベント ハンドラーを要素にバインドしたいが、同じイベント ハンドラーを再バインドしたくない (元のハンドラーへの参照がない) 場合は、名前空間を使用できます。

$element.bind('click.onlyone', function()...);
$element.unbind('click.onlyone');
//or $element.unbind('.onlyone');
$element.bind('click.onlyone', function()...);

アップデート:

bind以前のハンドラは削除されません。したがって、それらをトリガーしたくない場合は、unbind最初にトリガーする必要があります...

于 2011-05-04T11:15:08.480 に答える