違い 1:
トリガーを使用して、JQuery オブジェクトに一致するすべての要素を呼び出すことができます。
//トリガーの例1。トリガーを使用すると、3 つのボタン クリック イベントがすべて発生します。//トリガーメソッドをtriggerHandler()に置き換えてみてください。最初のボタン要素イベント ハンドラーのみが起動することがわかります。
<button id = "button1">button1</button>
<button id = "button2">button2</button>
<button id = "button3">button3</button>
$("#button1").on("click", function(){
alert("button1 clicked");
});
$("#button2").on("click", function(){
alert("button2 clicked");
});
$("#button3").on("click", function(){
alert("button3 clicked");
});
// 違いを確認するために、トリガーを triggerHandler に置き換えます
$("#button1, #button2, #button3").trigger("click");
相違点 2:要素イベントに triggerHandler() を使用すると、その要素のネイティブ イベントは呼び出されません。trigger() は正常に動作します。
//例:
// 違いを確認するために、トリガーを triggerHandler に置き換えます
<button id = "button1">button1</button>
<button id = "button2">button2</button>
$("#button1").on("click", function(){
$("#button2").trigger('click');
});
$("#button3").on("click", function(){
var value = $("#button2").triggerHandler('click');
alert('my value:'+ value)
});
$("#button2").on('click', function(){
alert("button2 clicked");
});
違い 3: trigger() は Jquery オブジェクトを返しますが、triggerHandler() は最後のハンドル値を返します。
//例3
<button id="button1">Button1</button>
<button id="button2">Button2</button>
<button id="button3">Button3</button>
$("#button1").on("click", function(){
var myValue = $("#button2").trigger('click');
alert(myValue);
});
$("#button3").on("click", function(){
var value = $("#button2").triggerHandler('click');
alert('my value:'+ value)
});
$("#button2").on('click', function(){
alert("button2 clicked");
return true;
});
その他の違いは
triggerHandler() でトリガーされたイベントは、DOM 階層をバブルアップしません。ターゲット要素によって直接処理されない場合、何もしません。