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/向您展示。我希望当您单击“单击”时,它应该显示警报消息。

4

2 回答 2

2

与其尝试克隆事件侦听器,为什么不使用 on() 事件委托来为您做到这一点?

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

于 2013-09-26T17:50:43.520 回答
1

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

 var existing = element.html();
 element.empty();
  // Do some stuff with element
 /* ... */
 // Restore the previous content.
 element.append(existing);
于 2013-09-26T17:53:33.497 回答