Какие преимущества дает назначение событий через универсальный метод on()
перед назначением событий, например, методами click()
, hover()
, keydown()
?
Данный метод не дает никаких преимуществ, просто потому, что все перечисленные методы внутри используют этот метод:
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
function( i, name ) {
// Handle event binding
jQuery.fn[ name ] = function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
};
} );
Правда, можно отметить, что при создании используются не все параметры метода on
. Подробнее прочитать о данном методе можно в справке.
Не используется параметр selector, позволяющий указать от какого из вложенных элементов ловить событие. Если null
или пропущен, события будут ловиться, только на элементах из набора.
Для сравнения:
Одинаковое поведение
$(selector).click(function(){...});
$(selector).on('click',null,function(){...});
Все еще одинаковое поведение
$('parent child').click(function(){...});
$('parent child').on('click',null,function(){...});
Поведение будет отличаться, так как сам обработчик навешан на родителя, поэтому не важно в какой момент был добавлен элемент child по которому кликнули.
$('parent').on('click','child',function(){...});
Например есть структура
<div id="container">
<div class="elem"></div>
<div class="elem"></div>
<div class="elem"></div>
<div class="elem"></div>
<div class="elem"></div>
</div>
задача - ловить клики на элементы
можно просто
$('.elem').click(f)
но тогда создается МНОГО хендлеров
вместо этого лучше сделать вот так
$('#container').on('click', '.elem', f)
в этом случае хендлер создается только один допольнительно ловиться добавленные ПОСЛЕ подключения хендлера элементы, типа live
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Please help me!!! Can you write me what do rows, from 1 to end