質問

ボタン要素にクリック イベントを添付し、後で削除したいのですが、unclick() または unbind() イベントが期待どおりに機能しません。以下のコードでは、ボタンは「黄褐色」色で、クリック イベントが機能します。

window.onload = init; 
function init() {
    $("#startButton").css('background-color', 'beige').click(process_click);
    $("#startButton").css('background-color', 'tan').unclick();
}

要素からイベントを削除するにはどうすればよいですか?

役に立ちましたか?

解決

そんなことはない unclick(). 。どこからそれを入手したのですか?

unbind を呼び出すことで、要素から個々のイベント ハンドラーを削除できます。

$("#startButton").unbind("click", process_click);

すべてのハンドラーを削除する場合、または無名関数をハンドラーとして使用した場合は、2 番目の引数を省略できます。 unbind():

$("#startButton").unbind("click");

他のヒント

あるいは、私がそうしなければならなかったように、クリック関数を使用した直後にそのバインドを解除したい状況も考えられます。

$('#selector').click(function(event){
    alert(1);
    $(this).unbind(event);
});

アンバインドはあなたの友達です。

$("#startButton").unbind('click')

バインドを解除してもよろしいですか?後で、何度も何度もバインドしたい場合はどうすればよいでしょうか?動的なイベント処理のバインド/バインド解除は、コードの別のポイントから呼び出されると手に負えなくなる傾向があるため、私は好きではありません。

別のオプションを検討することもできます。

  • ボタンの「無効」プロパティを変更する
  • 「process_click」関数内にロジックを実装します。

私の2セントだけで、普遍的な解決策ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top