2016-09-28 4 views
0

У меня есть это:JQuery событий на динамически создаваемых элементов

<button class="btn btn-primary">Click me</button> 

Тогда это:

$('body').on('click', '.btn', function() { console.log('foo'); }); 

В любое время я нажимаю на кнопку не регистрирует "Foo". Зачем?


Решение: Я просто должен был заботиться о распространении событий.

+0

проверить наличие ошибок в консоли – guradio

+0

Ошибка. Он действительно работает в любом другом случае, но не в моем проекте ... – zangarmarsh

+0

Можете ли вы объяснить, что ваше решение было? Похоже, что он был решен тем, что не было включено в исходный вопрос, но может быть полезным для кого-то другого с аналогичной проблемой. –

ответ

0

Попробуйте

$(document).on('click', '.btn', function() { console.log('foo'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="btn">Click Me</button>

вместо этого, так как это зарегистрировать событие на уровне документа, и он должен работать.

+0

Не понимаю, что между вашим кодом и моим? Кстати, проблема заключалась в том, что я мог управлять распространением событий, как я сказал прямо под моим вопросом. – zangarmarsh

+0

Как я понял из своего опыта, прикрепление события к документу обычно означает, что у вас будет немного больше комфорта с точки зрения скорости (не это примечательно), и он обязательно найдет ваш элемент, если он существует, и он не если он загружен позже или с помощью ajax, где с привязкой события к «телу» означает, что браузер должен сначала найти тело, затем элемент и иногда не может этого сделать. – Imaginaroom

Смежные вопросы