可以修改jQuery id选择器吗?

时间:2013-01-18 14:23:43

标签: javascript jquery dom

可能这不可能做到,但万一我错过了什么:

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

我问的原因是我正在尝试优化一些重度利用id选择器的遗留代码,以便执行一些繁重的DOM操作。但是,所有这些ID都属于单个元素。我读过如果那个元素从dom中移除,被操纵,然后插回来的性能会好得多。因为所有那些“#”选择器而无法完成......

(旁注:通过在操作之前设置display:none,但仍然很慢),性能显着提高。

2 个答案:

答案 0 :(得分:1)

选择器只能从DOM中选择。你想要做的是将这些片段存储为JavaScript变量。

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

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

答案 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]);

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