可能这不可能做到,但万一我错过了什么:
是否可以临时修改jQuery id选择器(“#”)以便操作说...一个DocumentFragment,或从DOM中删除的元素而不是默认行为?
我问的原因是我正在尝试优化一些重度利用id选择器的遗留代码,以便执行一些繁重的DOM操作。但是,所有这些ID都属于单个元素。我读过如果那个元素从dom中移除,被操纵,然后插回来的性能会好得多。因为所有那些“#”选择器而无法完成......
(旁注:通过在操作之前设置display:none,但仍然很慢),性能显着提高。
答案 0 :(得分:1)
选择器只能从DOM中选择。你想要做的是将这些片段存储为JavaScript变量。
$p = $('p').remove();
// ...
$('body').append(someFunction($p));
答案 1 :(得分: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]);