JQuery нажмите на добавленные элементы

Я создал некоторые html-ссылки с jQuery и добавил их к некоторому div но он швы, что я не могу вызвать метод click сейчас, когда эти элементы добавляются (он работал нормально, когда они были жестко закодированы в html) $('#something a').click(function() ...

Кто-нибудь знает решение для этого?

3 ответа

Используйте .delegate() для этих случаев:

$('#something').delegate('a', 'click', function() {

Это прикрепляет обработчик click на #something, а не направление к элементам внутри... поэтому он работает над привязками, добавленными позже. Альтернативная версия (хуже для нескольких причин) .live():

$('#something a').live('click', function() {


Что также работает, это добавить событие [click] при добавлении элементов, например:

$('<someelement>').click(function(){ 
 $('<someelement>').append('<htmlcodetoappend>');
 $('<appendedelement>').click(function() { /* do something */ });
});
</appendedelement></htmlcodetoappend></someelement></someelement>

Этот подход выполняет эту работу, но я не уверен, есть ли какие-либо предостережения - возможно, один из профессионалов мог бы вмешаться здесь.

Cheers, Erik


вам нужно использовать функцию live, чтобы убедиться, что событие click привязано к элементам, которые были добавлены в DOM после загрузки страницы:

$('#something a').live('click',function() .....

licensed under cc by-sa 3.0 with attribution.