1

このトピックに関する多くの例を見つけました..しかし、私は完全には理解していません. 私の論理は正しいようですか?ボタン (.myClass のクラス) として div があり、myCount >= 1 でない限りクリック可能にしたくありません。

// I want to unbind if myCount == 0
if ( myCount == 0) {
 $('.myClass').unbind().css("opacity","0.5");
} else {
 // **would this rebind?**
 $('.myClass').click(callMyFunction);
}
4

3 に答える 3

2

何を達成しようとしているのか正確にはわかりませんが.unbind()、引数なしで呼び出されたときに、要素にアタッチされているすべてのハンドラーを削除します。したがって、$('.myClass').unbind()クラスが の要素に関連付けられているすべてのイベント ハンドラーを削除します.myClass。1 つのイベント ハンドラー のみを追加しているように見えるため、次のようにハンドラーclickのみをバインド解除することをお勧めします。これにより、後でイベントを追加した場合に、他のイベントがアンバインドされる理由に混乱することはありません。click$('.myClass').unbind('click')

于 2012-08-02T19:21:23.033 に答える
2

click(callMyFunction).bind("click", callMyFunction)またはの省略形です.on("click", callMyFunction)

バインドするには を使用on()してバインドを解除しますoff()。これらは、jQuery 1.7 以降で推奨される方法です。古いバージョンを使用している場合はbind()、、、unbind()またはdelegate()およびundelegate()

$('.myClass').off('click')

そして縛る

$('.myClass').on('click', function(){});

別の投稿で述べたように、名前空間の使用は、click.mynamespaceたとえば次のようにイベントを分類するための追加の方法です。

利用可能なさまざまなバインディング メソッドの詳細と、いつ導入され、何を、なぜ置き換えたかについては、この投稿を参照してください。

その他のリソース:

于 2012-08-02T19:23:34.880 に答える
2

で名前空間イベントを使用できますon()bind()廃止されました。

var foo = function () { ... }

if (myCount)
  $('.myclass').on('click.foo', foo)
else
  $('.myclass').off('.foo')
于 2012-08-02T19:23:56.043 に答える