9

次のような構造の例がある場合:

HTML

<div id="foo">hello foo</div>

JS

var $foo = $('#foo');

.replaceWithそして、jQueryのメソッドを使用して、指定されたjQuery /ノード参照のHTMLマークアップ全体を置き換える必要があります。それぞれ、新しいノード参照を取得するためのベストプラクティスは何ですか?

問題は、古い.replaceWithjQueryオブジェクトへの参照を返します(これは多かれ少なかれ不合理に聞こえます)。ドキュメントから:

ただし、元のjQueryオブジェクトが返されることに注意する必要があります。このオブジェクトは、DOMから削除された要素を参照し、置き換えられた新しい要素を参照しません。

私が好きなら

$foo = $foo.replaceWith('<div>new content</div>');

その新しいノードを同じ変数で参照/キャッシュしたいと思います。はい、新しく挿入されたDOMノードを再クエリすることはできますが、それは私の頭の中では非常に不格好なようです。

DOMを再クエリする必要なしにそれを達成するためのトリッキーな方法はありますか?

例: http: //jsfiddle.net/Lm7GZ/1/

4

3 に答える 3

7

.replaceAll()次の関数を使用します。

$foo = $('<div>new content</div>').replaceAll($foo);
于 2012-10-01T11:06:22.330 に答える
3

replaceAll()ソースをターゲットと交換して、を使用できます。

$foo = $('<div>new content</div>').replaceAll($foo);
于 2012-10-01T11:06:28.987 に答える
0

次のいずれかの方法を使用できます。

$foo = $('<div id="foo">hello foo</div>').replaceAll('#foo'); //As a target string;

また

$foo = $('#foo');
$foo = $('<div id="foo">hello foo</div>').replaceAll($foo); //As a jQuery Object;

また、連鎖クエリを実行することもできます。

$('<div id="foo">hello foo</div>').replaceAll('#foo').find('something into the newly added html')......
于 2014-05-25T11:14:15.417 に答える