1

可能这无法完成,但万一我遗漏了什么:

是否可以临时修改 jQuery id 选择器(“#”),以便对说...一个 DocumentFragment 或从 DOM 中删除的元素而不是默认行为进行操作?

我问的原因是我正在尝试优化一些大量使用 id 选择器的遗留代码,以便执行一些繁重的 DOM 操作。但是,所有这些 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 回答