2009-08-08 2 views
0

У меня есть гиперссылка с идентификатором при нажатии, будет выполнять определенное событие с использованием JQuery. JQuery записывает существование этой ссылки при загрузке документа. Некоторое время в ходе посещения пользователей. Я удаляю эту ссылку и повторно добавляю ее позже. Однако даже после того, как эта ссылка была удалена и добавлена, она даже не запускается снова.Добавление, удаление и добавление элемента снова удаляет его событие

Почему так и как я могу исправить это? Что-то связанное с привязкой событий? Или я просто добавлю атрибут onclick?

ответ

3

Вы использовали тег, как это, чтобы добавить событие щелчка:

$('#speciallink').click(function(){ 
    // do something 
    return false; 
}); 

Это будет привяжите событие к элементам, выбранным в этот момент.

Удаление ссылки и добавление ее снова приведет к эффективному созданию нового элемента без этого события. Вы можете использовать «живой» метод, чтобы добавить правила, которые будут применяться к событиям, соответствующих правилу, даже если эти элементы создаются после создания правила:

$('#speciallink').live("click",function(){ 
    // do something 
    return false; 
}); 
+0

+1 за то, что первым человеком, чтобы упомянуть живые события –

+0

Благодаря! Я просто продолжаю учиться. :) – Abs

1

Не удаляйте ссылку из дерева DOM. Вместо этого просто переключите его видимость с помощью show() и hide().

Удаление элемента из дерева DOM с помощью remove() приведет к удалению элемента и всех его обработчиков событий, даже если вы добавите его обратно с тем же идентификатором.

1

Вам нужно будет связать этот обработчик событий с новым элементом, когда он будет добавлен, или вы можете использовать live() вместо привязки для достижения того, что вам нужно.

В основном обработчик события ссылается на исходный элемент. Когда этот элемент удаляется, даже если новый элемент добавлен с одним и тем же идентификатором, это другой элемент.

0

Если вы полностью удалите элемент, вам нужно будет повторно подключить прослушиватели событий к элементу при его воссоздании.

В качестве альтернативы, просто скрыть элемент, установив его стиль для отображения: никто с .show() и .hide()

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