2012-03-12 2 views
9

У меня есть div с class="tags" с одной предопределенной гиперссылкой.

<div class="tags"> 
    <a href="#">myLink</a> 
</div> 

У меня есть функция для удаления этой гиперссылки, если пользователь нажимает на нее.

$('.tags a').click(function() { 
    $(this).remove(); 
    return false; 
}); 

И это работает с предопределенными гиперссылками. Если добавить еще ссылки с помощью JQuery (после загрузки страницы)

$('.tags').append('<a href="#">newLink</a>'); 

Функция для удаления гиперссылки (на клик) не будет вызван этим, добавил ссылки. Как это решить?

ответ

4

Вы должны использовать жить-функции:

$(".tags a").live("click", function() { 
    // ... 
}); 

Поскольку вы добавляете ссылки после начальной загрузки, стандартное событие щелчка не будет привязываться к динамическим добавлены ссылки.

+19

** Примечание **, что ['live()'] (http://api.jquery.com/live) обесценивается с 1.7. Целесообразно использовать ['on()'] (http://api.jquery.com/on) с этого момента. Переведенный вызов будет '$ (document) .on ('click', '.tags a', function() {/ * foo * /});' – Matt

+0

Спасибо. Должен ли я использовать его во всех моих кликах/подобных действиях или только когда это действительно необходимо? – svenkapudija

+1

Для исполнения, посмотрите на этот ответ: http://stackoverflow.com/questions/6047193/liveclick-and-performance Я лично предпочитаю использовать событие click и использовать только live-event, если я действительно нужно это, так как ясно, что будут динамические добавленные элементы. – kufi

0

Ваше событие click привязано только к текущему элементу dom, а не к будущему элементу. Если вы хотите добавить это событие ко всему элементу, включите будущее, тогда вам нужно использовать live-событие в jquery. http://jsfiddle.net/6cGvt/

+5

** Обратите внимание, что ['live()'] (http://api.jquery.com/live) обесценивается с 1.7. Целесообразно использовать ['on()'] (http://api.jquery.com/on) с этого момента. Переведенный вызов будет '$ (document) .on ('click', '.tags a', function() {/ * foo * /});' – Matt

+0

Yup, ... Для последней версии в jquery. использовать метод ON – sandeep