可以修改jQuery id选择器

Possible to modify jQuery id selector?

本文关键字:id 选择器 jQuery 修改      更新时间:2023-09-26

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

是否有可能临时修改jQuery id选择器("#"),以便操作说…是一个DocumentFragment,还是一个从DOM中移除的元素,而不是默认行为?

我问这个问题的原因是我试图优化一些遗留代码,这些代码大量利用id选择器来执行一些繁重的DOM操作。但是,所有这些id都在一个元素下。我读到,如果从dom中删除该元素,进行操作,然后再插入,性能将会好得多。这是不可能的,因为所有的选择器"#"…

(旁注:在操作前设置display:none可以显著提高性能,但仍然很慢)。

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

$p = $('p').remove();
// ...
$('body').append(someFunction($p));
http://jsfiddle.net/mblase75/tjVUM/

如果在变量中存储对被删除元素的引用,则可以这样做:

// 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