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 に答える