Разница 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 () для события элемента, собственное событие не будет вызываться для этого элемента. Триггер () будет работать нормально.
// Пример:
// заменить триггер на 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 () возвращает последнее значение дескриптора или, если никакие обработчики не запущены, он возвращает undefined
// Example3
<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; если они не обрабатываются целевым элементом напрямую, они ничего не делают.