X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> AJAX + JQuery.On
wormen
сообщение 2013-08-26, 0:20
Сообщение #1
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 800
Регистрация: 2012-09-13

Репутация:   нет  
Всего: нет


Подскажите, кто как вешает обработчик на динамически созданные элементы...
Исходя из документации у JQuery для динамических элементов есть метод .on(), код выглядит тогда примерно так

$('ul').on('click', 'li', function(){ // обработчик ...
или
$('ul li').on('click', function(){ // обработчик ....

но у меня он почему-то не срабатывает, событие click не срабатывает как не мудри..... кто с таким уже сталкивался?


Сообщение отредактировал wormen - 2013-08-26, 0:21
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2013-08-26, 6:20
Сообщение #2
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 260
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (wormen @ 2019-11-14 15:10)
$('ul').on('click', 'li', function(){ // обработчик ...

Этот код повесит обработчик для все существующие ul, когда клик приходится на любой li внутри. Т.е. на момент вызова этого кода ul-ы уже должны существовать, а вот li уже могут быть динамическими.

Цитата (wormen @ 2019-11-14 15:10)
$('ul li').on('click', function(){ // обработчик ...

Этот же код повесит обработчик на все существующие li. В отличии от предыдущего кода, здесь вообще не допускается какая-либо динамика: и ul и li должны существовать на момент вызова кода.

Мне кажется проблема в том, что у тебя динамические не только li, но и ul. Посему, воспользуйся кодом:
$(document).on('click', 'ul li', function(){ // обработчик ...
Перейти в начало страницы
+Цитировать сообщение
wormen
сообщение 2013-08-26, 7:18
Сообщение #3
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 800
Регистрация: 2012-09-13

Репутация:   нет  
Всего: нет


этот код из доков, у меня немного другой, но суть та же самая, элементы который подгружаются на ajax,  не удается прицепить к обработчику, по всякому уже пробовал.... не обрабатывается click и все...
Перейти в начало страницы
+Цитировать сообщение
wormen
сообщение 2013-08-26, 11:25
Сообщение #4
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 800
Регистрация: 2012-09-13

Репутация:   нет  
Всего: нет


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


$("#support-main-wrap").hover(function(){//родительский элемент подгрузки ajax

        $(this).find(".otvet").click(function(){ //находим элемент и присваиваем обработчик
        alert("ok");
        return false;
        });

        return false; // на всякий случай...
});
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2013-08-26, 20:59
Сообщение #5
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 260
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (wormen @ 2019-11-14 15:10)
а далее все элементарно....

Получился говнокод. Есть ли у тебя понимание того, что делает метод hover?
Перейти в начало страницы
+Цитировать сообщение
wormen
сообщение 2013-08-26, 23:20
Сообщение #6
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 800
Регистрация: 2012-09-13

Репутация:   нет  
Всего: нет


конечно, я вкурсе что там получилось, в порядок не долго привести, главное суть
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0360 сек.    11 запросов    GZIP включен    Сейчас: 2019-11-14, 14:10