2015-09-09 3 views
0

У меня есть проблема с моим яваскриптом функцией:функция Javascript после HTML добавляется

$(".like-btn").click(function() { .. } 

эта функция не срабатывает больше после того, как в моей JavaScript где-то еще, что я делать такие вещи, как

$("#1021").append("'<button type="submit" class="btn btn-default like-btn" ... .etc "); 

Поэтому в основном я нужно, чтобы мой jquery запускался также после добавления еще нескольких html на мою страницу.

+1

См: [Понимание Делегирование событий] (http://learn.jquery.com/events/event-delegation /) – Stryner

ответ

4

Поскольку like-btn класс добавляется динамически, вам нужно использовать event delegation зарегистрировать обработчик события, как это:

// New way (jQuery 1.7+) - .on(events, selector, handler) 
$('#1021').on('click', '.like-btn', function(event) { 
    event.preventDefault(); 
    alert('testlink'); 
}); 
+0

1021 был всего лишь примером, идентификаторы меняются :) – user2391356

+1

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

+0

Вместо этого вы можете использовать 'document'. Но было бы лучше использовать родительский статический 'container'. Это приложит ваше событие к любому 'like-btn' в элементе' container', уменьшив объем проверки всего дерева элементов документа и повышения эффективности. –

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