1

おそらくこれはできませんが、何かが足りない場合は:

jQuery idセレクター( "#")を一時的に変更して、たとえば... DocumentFragment、またはデフォルトの動作の代わりにDOMから削除された要素を操作することは可能ですか?

私が尋ねている理由は、重労働のDOM操作を実行するために、IDセレクターを多用するレガシーコードを最適化しようとしているためです。ただし、これらのIDはすべて単一の要素の下にあります。その要素がdomから削除され、操作されてから挿入された場合、パフォーマンスがはるかに向上することを読みました。これらすべての「#」セレクターのためにこれを行うことはできません。

(補足:操作前にdisplay:noneを設定することでパフォーマンスが大幅に向上しましたが、それでも低速です)。

4

2 に答える 2

1

セレクターはDOMからのみ選択できます。あなたがしたいのは、それらのフラグメントをJavaScript変数として保存することです。

$p = $('p').remove();
// ...
$('body').append(someFunction($p));

http://jsfiddle.net/mblase75/tjVUM/

于 2013-01-18T14:29:32.580 に答える
1

削除された要素への参照を変数に格納すると、これを行うことができます。

// Get a div by id
var div = $('#thediv'); 
// Remove it from the DOM
div.remove();
// Change the color of the text inside it to red
// Notice we're selecting with the div as the context
$('p', div).css('color', 'red');
// Re-add div to DOM; text will be red
document.body.appendChild(div[0]);

http://codepen.io/anon/pen/sglIk

于 2013-01-18T14:32:55.083 に答える