Можно подтвердить, что встроенные обработчики запускаются, потому что они явно закодированы :
handle = ontype && cur[ ontype ];
if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
event.preventDefault();
}
, где ontype
в этом случае "onclick"
. Поэтому он выбирает свойство onclick
элемента и затем выполняет его. Этот фрагмент кода вызывается всегда, независимо от .trigger
/ .triggerHandler
.
Однако собственные действия, такие как elem.click()
, выполняются только внутри блока if
:
if ( !onlyHandlers && !event.isDefaultPrevented() ) {
// ...
elem[ type ]();
, где onlyHandlers
равно true
для triggerHandle
и false
для .trigger
, и поэтому triggerHandler
не выполняется, например, elem.click()
(тогда как .trigger
делает). Таким образом, собственное действие предотвращено.
Таким образом, встроенные обработчики и собственные действия являются отдельными вещами и также обрабатываются отдельно. .triggerHandler
.
предотвращает только собственные действия