Мой текущий код - это
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/, чтобы показать вам. Я хочу, чтобы, щелкнув по щелчку, он должен отобразить предупреждающее сообщение.
Вы должны использовать метод.on() для привязки событий. Тогда вы можете добиться того, что хотите сделать так,
var existing = element.html();
element.empty();
// Do some stuff with element
/* ... */
// Restore the previous content.
element.append(existing);
Вместо того, чтобы пытаться клонировать прослушиватели событий, почему бы не использовать делегирование событий() для этого?
.on
и она не работает так, как я хочу
.on
и она не работает так, как я хочу