如何获取包含侦听器的元素的内容

时间:2013-09-26 17:45:47

标签: javascript jquery dom

我目前的代码是

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/来向您展示。我希望当你点击“点击”时,它应该显示警告信息。

2 个答案:

答案 0 :(得分:2)

为什么不使用on()事件委托来为你做这件事,而不是试图克隆事件监听器?

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

答案 1 :(得分:1)

您应该使用 .on()方法来绑定事件。然后你可以像这样实现你想做的事情

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