8
オブジェクトに対して非バブリング可能なカスタムjQueryイベントをトリガーしたいとします。バブリングを防ぐためにreturn falseまたはstopPropagationを使用することができます。私が知りたいことは、カスタムイベントをトリガし、デフォルトではバブルしないように指定することができます。バブリングを使用しないカスタムjQueryイベントのトリガー
これは私が今持っているコード
$(".abc").on("change", function() {
var e = new $.Event("datachange");
$(this).trigger(e)
});
上記では#abcにdataChangeイベントをトリガし、イベントのすべての方法をバブルアップ。私はそれを望んでいない。私は以下を使ってそれを達成することができます。
$(".abc").on("change", function() {
var e = new $.Event("datachange");
//e.stopPropagation(); this does not work
$(this).trigger(e)
}).on("datachange", function (e) {
e.stopPropagation();
return false;
});
私は、triggerHandlerは、最初の一致する要素に対してのみ同様のことを行うと読んでいます。
これを達成するより良い方法はありますか?
あなたのイベントハンドラで 'e.stopPropagation()'が悪いのは何ですか? – crush
@crushイベントハンドラが存在せず、イベントがバブリングして終了し、そのオブジェクト用ではないハンドラに捕捉される可能性があります。 – Arun