Присвоить обработчик рекурсивно - правильно ли так?
Здравствуйте
В общем, есть разметка с вложенными ссылками (каталоги, подкаталоги и ниже). При нажатии на каждую ссылку должно загружаться содержимое по ajax. Но - в содержимом тоже есть ссылки, а к ним обработчик почему-то не применяется. Я сделал вот так, function wrap_links() { $("li a").click(function() { var url = $(this).attr("href"); // возьмем ссылку $("#content").load(url,wrap_links); // загружаем обновлённое содержимое return false; //не переходим }); } Как видите, каждый раз при загрузке контента отрабатывает функция wrap_links , которая добавляет обработчик к каждой ссылке. Но - правильно ли это? Может можно как-то лучше. |
Цитата:
|
А можно подробнее? Пишу код, но не работает (при загрузке по ajax нового контента).
$("li").on("click","a",function() { var url = $(this).attr("href"); $("#content").load(url); return false; }); } |
Цитата:
|
Оно отрабатывает также, первый раз, а потом все. Я убрал эти классы, т.е. чисто li с вложенными а. Первый раз отработало, потом ajax подгрузил очередной список , и все.
Пробовал ставить обработчик на родительский ul (т.е. написать вида $("ul").on("click","li a",function() Аналогично, раз отрабатывает и все. Может jQuery не видит элементов, что добавлены ajax'ом? Или должен видеть? |
Что вы мне вопросы задаете, если я не знаю html структуры того, во что добавляется. Делегирование для динамически добавляемых элементов, это решение, а делегировать нужно общему родителю и что важно, ближайшему, гарантированно присутствующему на странице. Что есть у вас общий ближайший родитель для этих ссылок? Вот ему и установите обработчик. А ajax ли это, или иное добавление на страницу, роли никакой не играет.
|
Цитата:
$("div.jumbotron").on("click","ul li.zagNav a",function() { var url = $(this).attr("href"); $("#content").load(url); return false; }); И заработало. Спасибо! p.s. А структура примерно такая <div class="jumbotron" id="content"> <h4>Список по категориям</h4> <ul> <li class="zagNav"><a href="/ss/zag.php?cat=1">Первый</a></li> <li class="zagNav"><a href="/ss/zag.php?cat=2">Второй</a></li> <li class="zagNav"><a href="/ss/zag.php?cat=3">Третий</a></li> </ul> </div> И при клике подгружается все внутрь div#content |
Часовой пояс GMT +3, время: 16:28. |