2013-02-12 3 views
4

У меня есть JQuery код, как это:JQuery добавить слушатель приложенного содержания

$("#add").click(function(event){ 
    $("#list").append('<a class="remove" href="#">x</a>'); 

    return false; 
}); 

$('.remove').live('click', function(){ 
    alert("123"); 
}); 

Если один нажал на классе = удалить, я хотел бы, чтобы предупредить 123. Это не происходит, хотя. Я думаю, что это простая идея, но я должен что-то упустить.

Любые идеи?

Спасибо.

+0

Вам необходимо [делегировать] (http://api.jquery.com/delegate/). – crush

ответ

9

Живой осуждается, используйте на

$(document).on('click','.remove',function(){ 
alert("123"); 
}); 
+0

, и вы делаете документ, чтобы связать его с тем, что присутствует во время загрузки – mplungjan

+0

Я вижу, что он выполняет делегирование событий так, как вы его используете. Интересно. Спасибо за это. – crush

+0

Да, если присутствует селектор, это делегированный обработчик событий. Подробнее здесь: http://api.jquery.com/on/ – Angel

2

Другим способом добавить элемент и связать событие без делегирования:

$("#add").click(function(event){ 
    $("<a />", { 
     "class": "remove", 
     href: "#", 
     text: "x" 
    }).on("click", function() { 
     alert("123"); 
     return false; 
    }).appendTo("#list"); 

    return false; 
}); 

Избегайте использование live метода, так как он был устаревшим и, наконец, удален в последнем версия jQuery.

+0

Nice one ....... – mplungjan

1

попробовать на делегатом function..since вы apending, что list ... Вы можете использовать #list что лучше в производительности, что document

$('#list').on('click','.remove', function(){ 
    alert("123"); 
}); 

вы можете перейти по ссылке, чтобы прочитать больше о on() event

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