我知道执行以下操作更快:
var $header = $("#header"); $header.css({color:"#ff0000"}); $header.find("a").addClass("foo");
代替:
$("#header").css({color:"#ff0000"}); $("#header a").addClass("foo");
因为jQuery不需要在DOM中再次找到元素,因为我们直接引用它们。
让我们说,我有这个:
var $header_elements = $("#header li"); var $footer_elements = $("#footer li");
和我单独使用两个jQuery操纵。但是,然后,我需要做两件事情。使用选择器,我会这样做:
$("#header li,#footer li").css({color:"#ff0000"});
但是,然后,DOM需要再次解析以找到匹配的元素。有没有办法使用我以前声明的变量,而不是一个新的选择器?像下面这样的东西(这不工作,我知道,这是给我一个想法我在找什么):
$($header_elements + $footer_elements).css({color:"#ff0000"});
我认为选择器返回某种数组或对象。我正在寻找的是合并这些的一种方式。任何人知道这是否可能和如何做到吗?
谢谢你的帮助!
解决方法
只需使用
add
方法:
$header_elements.add($footer_elements).css({color:'#ff0000'});
Given a jQuery object that represents a set of DOM elements,the .add() method constructs a new jQuery object from the union of those elements and the ones passed into the method. The argument to .add() can be pretty much anything that $() accepts,including a jQuery selector expression,references to DOM elements,or an HTML snippet.