Доступ JQuery к динамически созданным объектам

Как я могу получить доступ к объектам (div), которые были созданы динамически. Я имею в виду DIVS, которых не было в выводе при запуске $(document).ready(function().

If I do:

$('#click_me').click(function() {
    $('#container').append('<div id="clicker2">can you click on me?</div>');
});

$('#clicker2').click(function() {
    alert('hurray, it works');
});

кликер2 не работает

Как я могу это исправить? Я намерен создать более одного динамически. и я хочу также назначить им действия Jquery.


person David King    schedule 05.10.2009    source источник


Ответы (3)


.click(), которые не работают с элементами span или div, добавленными позже, вам нужно будет использовать .live()

$("#clicker2").live("click", function(){
  # do stuff to spans currently existing
  # and those that will exist in the future
});
person halocursed    schedule 05.10.2009
comment
хорошо, мои действия тоже дублируются !!!! :( когда я делаю APPEND, а затем назначаю ему действие. В следующий раз, когда я добавляю и определяю действие, когда действие запускается.. оно выполняется дважды - person David King; 05.10.2009

Создайте явный элемент div и соберите его атрибуты и события, прежде чем добавлять его.

var $div = $('<div />').append('can you click on me?').attr('id', 'clicker2').click(function() {
alert('hurray, it works');
});
$('#container').append($div);
person Steerpike    schedule 05.10.2009

Просто поместите привязку клика внутрь функции первого клика:

$('#click_me').click(function() 
{
    $('#container').append('<div id="clicker2">can you click on me?</div>');
    $('#clicker2').click(function(){  alert('hurray, it works');   });
});

Как у вас, привязка вызывается, но нет "div#clicker2" для привязки ко второй функции.

Надеюсь это поможет.

person MaLKaV_eS    schedule 05.10.2009