Разница 1: Вы можете вызвать все элементы, соответствующие объекту JQuery, с помощью триггера.
// Пример1 для триггера. Все три события нажатия кнопки запускаются при использовании триггера. // Попробуйте заменить триггерный метод 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: триггера() возвращает объект Jquery, тогда как triggerHandler() возвращает последнее значение дескриптора или Если нет обработчики не срабатывают, он возвращает неопределенное значение
// 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; если они не обрабатываются целевым элементом напрямую, они ничего не делают.
Документы - вот почему я задал вопрос в первую очередь. Я понимаю поведение, но мне интересно, если это функция удобства или есть более глубокая причина, по которой она существует. –
Вы серьезно отказались, потому что не понимаете примеры, приведенные в документах. Хорошо, позвольте мне рассказать вам об этом. – Robert
Вам не нужно повышать, вы можете просто не голосовать вообще ... Я дал вам больше примеров, и вы все еще не понимаете, что не является моей ошибкой. В некоторых случаях вы не хотите возвращать false на фактический клик, поэтому # 1 действителен. # 2 Да ... вот в чем смысл, скрывая только один, но вызывающий весь соответствующий массив. Таким образом, вы можете setInterval, чтобы функция увеличивала скрытие # 3. См. № 1, с идеей о том, что вам нужны разные действия, основанные на фактическом клике и имитированном. # 4 Если вы хотите, чтобы значение возвращалось последним фактическим событием без создания нового. – Robert