JQuery preventDefault stopPropagation stopImmediatePropagation

Отличие в методах:
  • preventDefault() = прервать обработку действия по умолчанию на элементе текущего события
  • stopPropagation() = остановить всплытие(bubbling) события к родительским элементам
  • stopImmediatePropagation() = stopPropagation + прерывает передачу события во все последующие обработчики «слушающих» на текущем элементе

Определяем инициатора события (jQuery)

Определить программно вызвано событие $('#elem').trigger('clik') или пользователь «кликнул» по элементу. Варианты:
$( '#elem' ).on('click', function ( e ) {
    if ( e.originalEvent === undefined ) {
        alert( 'triggered programmatically' );   
    } else {
        alert( 'clicked by the user' );   
    }
})

или
$( '#elem' ).on('click', function ( e ) {
    if ( e.isTrigger !== undefined ) {
        alert( 'triggered programmatically' );   
    } else {
        alert( 'clicked by the user' );   
    }
})

или
$( '.elems' ).on('click', function ( e, a ) {
    if ( a !== undefined ) {
        alert( 'triggered programmatically ' + a.from );   
    } else {
        alert( 'clicked by the user' );   
    }
})
$( '#elem' ).trigger('click',{'from':'test'});