@Energy2

Почему не срабатывает событие .click после pjax загрузки?

Имеется контейнер в который с помощью pjax подгружается контент и кнопка в этом контейнере.
<div class="pjax_cont">
  <button id="test">ТЕСТ КЛИКА</button>
  <a class="testpjax" href="/faq">ССЫЛКА</a>
</div>

pjax
$(function () {
		$(document).pjax('.testpjax', '.pjax_cont', {fragment: '.pjax_cont'});
	});

Клик
$('#test').click(function(){
console.log('test клика')
	});

Если кликнуть по кнопке ТЕСТ КЛИКА до срабатывания Pjax, то функция срабатывает (в консоли выводится test клика), но если нажать на ССЫЛКА, тем самым перейти на другую страницу (перезагрузить контент в контейнере pjax_cont) и после этого вернуться назад и кликнуть, то событие не срабатывает. Если расположить кнопку за пределами "перезагружаемого" контейнера, то она срабатывает и до и после pjax запроса. Пробовал ставить обработчики кликов на классы (.test) - результат не меняется. В чем может быть проблема и как её решить?
UPDATE
Если поместить обработчик клика
$('#test').click(function(){
console.log('test клика')
	});

в теги script в перезагружаемом контейнере, то тоже все работает, но мне так не надо...
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
Вы перезагружаете содержимое контейнера, соответственно, у вас уже другой экземпляр кнопки создается.
Поэтому и обработчика события на нем нет.
Выхода два:
1) после обновления контента вешать обработчик события заново.
2) повесить обработчик на один из родителей и анализировать event.target, а заодно почитать про паттерн behavior и всплытие событий... например, тут )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Finch Москва
от 120 000 до 150 000 руб.
Wallet One Сочи
от 100 000 руб.
TrendAgent Санкт-Петербург
от 80 000 до 140 000 руб.
24 окт. 2018, в 03:33
13000 руб./за проект
24 окт. 2018, в 03:19
4000 руб./за проект
24 окт. 2018, в 01:07
35000 руб./в месяц