1

重複の可能性:
jQuery で最初のハンドラーから他のイベント ハンドラーを防止する方法

次のような 2 つの jQuery 関数があります。

$('#click-me').live('click', function(event) {
    alert("Hello World");
    event.preventDefault();
});
$('#click-me').live('click', function(event) {
    alert("Goodbye World");
});

奇妙に聞こえるかもしれませんが、2 番目の関数 ("さようなら世界" アラートを実行する) を実行したくないとしましょう。event.preventDefault は役に立ちません。

ありがとうピーター

4

3 に答える 3

5

を使用event.stopImmediatePropagation()して、後続のすべてのハンドラーがトリガーされないようにすることができます。

于 2012-12-30T21:27:03.633 に答える
1

次のようなものを試してください

var goodbyeCallback = function(event) {
   alert("Goodbye World");
}

$('#click-me').live('click', function(event) {
    alert("Hello World");
    $('#click-me').die('click', goodbyeCallback);
});
$('#click-me').live('click', goodbyeCallback);

コールバックが発生したときの順序に問題がある可能性があります。それらを単一のコールバックに参加させることはできませんか?

ところで:jQueryのドキュメントには、これ.live()は非推奨であると書かれています。

于 2012-12-30T21:33:34.737 に答える
1

live()使用する代わりon()off()

$('#click-me').on('click', canBeOnOrOff);

function canBeOnOrOff(event) {
  alert('goodbye world');

  // this removes the event handler from the click event
  $('#click-me').off('click', canBeOnOrOff);
}
于 2012-12-30T21:33:52.290 に答える