jQuery / bind || live || delegate

/* Методы jQuery .bind(), .live(), и .delegate() пишутся с использованием введеного в jQuery 1.7 метода .on() */

// Bind
$( “#members li a” ).on( “click”, function( e ) {} );
$( “#members li a” ).bind( “click”, function( e ) {} );

// Live
$( document ).on( “click”, “#members li a”, function( e ) {} );
$( “#members li a” ).live( “click”, function( e ) {} );

// Delegate
$( “#members” ).on( “click”, “li a”, function( e ) {} );
$( “#members” ).delegate( “li a”, “click”, function( e ) {} );

bind — навешивает обработчик непосредственно на элемент (когда тот есть в DOM-е). При удалении элемента так-же удаляется.

live — навешивает обработчик на document, используется делегирование (всплытие событий). Позволяет создать обработчик до того, как элемент появится в DOM-е. При удалении элумента обработчик не удаляется, а просто перестает срабатывать. Если в DOM снова вставить элемент, подходящий под селектор, обработчик снова отработает.

delegate — точно так-же, как и live, использует делегирование, только явно указывается узел, на который навешивается обработчик. (удобно для разработки модулей, или как их еще называют, виджетов)

on — объединяет возможности как bind, так и delegate (зависит от формы использования). Как верно было замечено, остальные методы deprecated и в новых версиях поддерживаться не будут. Елиный метод введен для того, чтобы не возникали вопросы какой метод использовать.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: