Функцция jQuery.live

Начиная с версии 1.3 в jQuery появилась функция live, которая является аналогом функции bind и так же служит для назначения событий всем элементам, которые соответствуют выражению заданному в селекторе jQuery.

Основное отличие функции jQuery.live от jQuery.bind состоит в том, что bind действует только на объекты, которые существовали на момент вызова функции. Для объектов созданных позднее необходимо запускать bind повторно.

Функция jQuery.live лишена этого недостатка и будучи запущена один раз позволяет назначить события не только на созданные объекты, но и на те объекты, которые появятся позже.

Для иллюстрации сказанного, приведу небольшой пример:


<body>
	<div class=clickme>
	  Click Here
	</div>


Для того, чтобы «оживить» данный пример добавим обработку события «click»:


$('.clickme').bind('click', function() {
// Обработчик события Click
});


Недостаток в том, что после того как будет добавлен дополнительный элемент, с тем же классом «clickme», созданный с помощью bind обработчик событий для него действовать не будет.


$('body').append('<div class=clickme>Click here too</div>'); 


Кому-то данное ограничение может показаться незначительным, но на самом деле это большая проблема. Ведь, для каждого нового элемента необходимо повторно назначать события, а это выливается в увеличение объема и сложности программы.

Появление новой функции jQuery.live значительно упрощает жизнь программиста и позволяет уменьшить сложность программы, а следовательно и риск ошибки.

Синтаксис функции аналогичен синтаксису команды bind:


.live(eventType, handler);


Поэтому единственное отличие между приведенным выше кодом для bind и кодом для live заключается в замене имени одной функции на другое:


$('.clickme').live('click', function() {
// Обработчик события Click
});


В дополнение хочу отметить, что начиная с версии jQuery 1.4.1 прототип функции live стал выглядеть иначе:

.live( eventType, eventData, handler )


EventData — это необязательный параметр, который предназначен для передачи в обработчик дополнительных данных.
Одновременно с этим изменением появилась возможность назначать несколько событий на один обработчик:


$('.clickme').live('mouseover mouseout', function() {
	if (event.type=='mouseover') {
		// обрабатываем mouseover
	}

	if (event.type=='mouseout') {
		// обрабатываем mouseout
	}

});


Думаю, что многие оценят полезность функции live и постепенно начнут переписывать свои программы на новый лад. Что касается меня, то процесс перехода уже начат.
  • 0
  • 1 марта 2010, 06:43
  • admin

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Коляски для двойняшек в спб. Коляски для двойняшек от emmaljunga. Коляски для двойняшек. . R20/R22,5 Цепи противоскольжения: цепи противоскольжения. Цепи, большой выбор.