2016-10-20 6 views
0

Слушаю для событий щелчка на классе notification-link:JavaScript, JQuery: Как повторно прослушивать события щелчка

$(document).ready(function(){ 
    $('.notifications-link').click(
     function(){ 
      $('.notifications-popup').addClass('show') 
     } 
    ) 
}); 

работает отлично. Проблема в том, что если я добавлю новый элемент с классом notification-link в DOM, jQuery не прослушивает его = если вы нажмете на добавленный элемент, ничего не произойдет.

Как это исправить?

+0

вам нужно прикрепить даже обработчик этих вновь созданных элементов динамически. Вы можете сделать это, используя jquery. – Will

+0

Как это сделать с помощью jQuery? Это в основном весь вопрос :-) – jonhue

+0

читайте по этой ссылке. http://api.jquery.com/on/ – Will

ответ

1

вместо

$('.notifications-link').click(function(){...})

использования

$(document).on("click", ".notifications-link", function(){...});

таким образом вы крепление события в документ, а затем проверить, чтобы увидеть, если клик приземлился на».notifications- ссылка ", и все будет работать, добавлено" .notifications-link "

+0

удивительный. работает. Благодарю. :). – jonhue

+0

@klvler - рады помочь. если вы хотите узнать больше [эта страница] (https://learn.jquery.com/events/event-delegation/). если это решит вашу проблему, пожалуйста, нажмите на галочку. удачи. –

+0

ударил его с семи минут - говорит, что есть еще один, чтобы пойти – jonhue

0

Необходимо использовать событие dele чтобы события работали над элементами, добавленными через JS.

$(document).ready(function() { 
    $('body').on('click', '.notifications-link', function (e) { 
     $('.notifications-popup').addClass('show'); 
    }); 
}); 

Для подробного объяснения о том, как Jquery метод события, как на, нажмите и т.д. работает, пожалуйста, проверьте этот пост: http://elijahmanor.com/differences-between-jquery-bind-vs-live-vs-delegate-vs-on/

+0

, в этой статье подробно объясняется, как на самом деле все работает. –

+0

объясняет 4 метода, три из которых устарели. –