Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aligator28/8f6a687ad261cbb98b7d6f8ca4754e50 to your computer and use it in GitHub Desktop.
Save aligator28/8f6a687ad261cbb98b7d6f8ca4754e50 to your computer and use it in GitHub Desktop.
Я первый раз, когда наткнулся на эту проблему, тоже долго думал, почему не хочет клик обрабатывать. А потом доперло, что событие то было навешано до того, как появились новые элементы!
Тогда еще существовал метод live(), который уже deprecated.
Вместо него теперь метод on(), но конструкция чуть сложнее выглядит. Объясню на примере:
Допустим у нас есть документ со структурой:
<div class='container'>
<a href='page'>link</a>
</div>
В который мы будем добавлять новые элементы (не важно как мы их добавляем):
$('button').on('click', function() {
$('.container').append("<a href='page'>link</a>");
});
Собственно остался вопрос: как правильно повесить событие, чтобы и на уже имеющиеся элементы стояло событие, и на новые добавлялось?
Обратимся в документацию по методу on(), и видим такую вещь:
$('.container').on('click', 'a', function(){
...
});
Т.е. что произошло: мы задали во втором параметре тот селектор, на который хотим добавить событие. А в функции $() указываем, где будет происходить "поиск" селектора, который указан во втором параметре.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment