我目前的代码是
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/来向您展示。我希望当你点击“点击”时,它应该显示警告信息。
答案 0 :(得分:2)
为什么不使用on()事件委托来为你做这件事,而不是试图克隆事件监听器?
答案 1 :(得分:1)
您应该使用 .on()方法来绑定事件。然后你可以像这样实现你想做的事情
var existing = element.html();
element.empty();
// Do some stuff with element
/* ... */
// Restore the previous content.
element.append(existing);