Как получить содержимое элемента, включая слушателей

0

Мой текущий код - это

var existing = element.children().clone(true);
element.empty();
// Do some stuff with element
/* ... */
// Restore the previous content.
element.empty().append(existing);

Это работает хорошо, пока элемент не содержит текст непосредственно под ним. Я имею в виду, что это так:

// Works great, because .children() will get tag2 and tag3, etc.
<element><tag2>...</tag2><tag3>...</tag3></element>

// Doesn't work, because .children() doesn't get the text node.
<element>some_text<tag2>...</tag2></element>

Поэтому я попытался использовать .contents(), однако у меня есть некоторые события, связанные с моим исходным элементом (поэтому я использовал .clone(true) в текущем коде), а .contents() не получает элемент со своим событием.

Знаете ли вы какой-нибудь другой метод, который я мог бы использовать? Или вы можете помочь мне написать код, который будет делать то, что я хочу, не будучи слишком сложным?

Большое спасибо.

РЕДАКТИРОВАТЬ

Я создал это: http://jsfiddle.net/Jv6rW/, чтобы показать вам. Я хочу, чтобы, щелкнув по щелчку, он должен отобразить предупреждающее сообщение.

Теги:
dom

2 ответа

1
Лучший ответ

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

 var existing = element.html();
 element.empty();
  // Do some stuff with element
 /* ... */
 // Restore the previous content.
 element.append(existing);
  • 0
    Я создал скрипку: jsfiddle.net/Jv6rW с .on и она не работает так, как я хочу
  • 0
    Хорошо, спасибо, я понял: jsfiddle.net/Jv6rW/1
2

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

http://api.jquery.com/on/

  • 0
    Я создал скрипку: jsfiddle.net/Jv6rW с .on и она не работает так, как я хочу
  • 0
    Хорошо, я понял: jsfiddle.net/Jv6rW/1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню