avatar

live click выполняется несколько раз

Рейтинг 3.5 из 5. Голосов: 232
Den 6 лет назад
4
,

0


Ответы (4)

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений
1089 Mar 10
6 лет назад
live click выполняется несколько разкод
CODE:
$('#sendr').live('click', function() { });
даже после замены на
CODE:
$('#sendr').bind('click', function() { }); $('#sendr').click( function() { }); $( "#sendr" ).on( "click", "a", function( e ) {} );
все равно срабатывает 2 раза при одном нажатии не пойму в чем причина
отправить
+ 0

Redy
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений
516 Mar 10
6 лет назад
вообще то методы live уже в новых версиях не поддерживаются вместо них ON используйте, а у вас вероятно проблема в том что метод навешен несколько раз если у вас код jquery в отдельном файле то проверьте сколько раз он подключен, сорее всего два раза
отправить
+ 0

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений
1089 Mar 10
6 лет назад
да спасибо, действительно был подключен два раза можете подробнее написать как заменить live на on
отправить
+ 0

Redy
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений
516 Mar 10
6 лет назад
// Bind навешивает обработчик непосредственно на элемент (когда тот есть в DOM-е). При удалении элемента так-же удаляется
CODE:
$( "#sendr li a" ).on( "click", function( e ) {} ); заменяет$( "#sendr li a" ).bind( "click", function( e ) {} );
// Live навешивает обработчик на document, используется делегирование (всплытие событий). Позволяет создать обработчик до того, как элемент появится в DOM-е. При удалении элумента обработчик не удаляется, а просто перестает срабатывать. Если в DOM снова вставить элемент, подходящий под селектор, обработчик снова отработает.Используется даже для тех элементов , которые будет добавлены в будующем, и для их тоже буджет сработывать навешенный метод
CODE:
$( document ).on( "click", "#sendr li a", function( e ) {} ); заменяет$( "#sendr li a" ).live( "click", function( e ) {} );
// delegate — точно так-же, как и live, использует делегирование, только явно указывается узел, на который навешивается обработчик.
CODE:
$( "#sendr" ).on( "click", "li a", function( e ) {} ); заменяет$( "#sendr" ).delegate( "li a", "click", function( e ) {} );
(Добавление)при назначении live, на самом деле вешается событие на window.document и при возникновении любого клика по документу, проверяется "а кликнули не по нужному ли нам типу элемента"
отправить
+ 0


Чтобы оставить комментарий войдите или зарегистрируйтесь