var a = ($(".two"),$("#one")); 楼主写错了吧,应该是: var a = ($(".two",$("#one")); 吧。 这段代码的逻辑是:
通过$("#one")找对对应的DOM元素(封装成jquery对象,假如命名为A)
$(".two",$("#one")): 以A作为上下文(在A对应的DOM元素内查找),构造新的jquery对象,对象里DOM元素的class值包含 .two 这种方式应该是最优的吧,就相当于: var ele = document.getElementById('one'); var eles = document.getElementsByClassName('two'); //注意代码的兼容性 用jquery写就是: $('#one').find('.two');
自版本1.3之后,jQuery采用了Sizzle库,与之前的版本在选择器引擎上的表现形式有很大的不同。它用“从左至右”的模型代替了“从右至左”的模型。确保最右的选择器具体些,而左边的选择器选择范围较宽泛些。
$("#one .tao") ,违背了上面的原则。
var a = ($(".two"),$("#one")); 楼主写错了吧,应该是: var a = ($(".two",$("#one")); 吧。
这段代码的逻辑是:
通过$("#one")找对对应的DOM元素(封装成jquery对象,假如命名为A)
$(".two",$("#one")): 以A作为上下文(在A对应的DOM元素内查找),构造新的jquery对象,对象里DOM元素的class值包含 .two
这种方式应该是最优的吧,就相当于:
var ele = document.getElementById('one');
var eles = document.getElementsByClassName('two'); //注意代码的兼容性
用jquery写就是:
$('#one').find('.two');
鉴于有些同学存在怀疑,在此贴出阮老师的一篇相关文章:
http://www.ruanyifeng.com/blog/2011/08/jquery_best_practices.html
同
$("#one").find(".two")
,缩小范围查找节点,查$("#one")内的class two确认中间是逗号?
那么 a就是$("#one")了