JQuery нажмите на добавленные элементы - PullRequest
12 голосов
/ 14 декабря 2010

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

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

Ответы [ 3 ]

21 голосов
/ 14 декабря 2010

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

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

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

$('#something a').live('click', function() {
4 голосов
/ 17 мая 2011

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

$('<someElement>').click(function(){ 
    $('<someElement>').append('<htmlCodeToAppend>');
    $('<appendedElement>').click(function() { /* do something */ });
});

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

Cheers, Erik

0 голосов
/ 14 декабря 2010

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

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