关于选择器的问题

选择器一般都有两种办法,一种普通的顺序查找方法,比如:

    span (子节点)
  • li (子节点) span (孙节点)
$(document).ready(function(){ $("ul").find("span").css({"color":"red"}); });

结果:
关于选择器的问题_第1张图片
这种 a().b()这种先执行前者后执行后者是由js的求值顺序决定的,所以只能是先前再后。如果不先求值a(),我们自然也就不能知道b()该在那个对象上面调用。

第二种:$(.class > span),这种就叫做过滤法,会先去查找span,然后判断查找出来的元素的父元素有没有该class,这个的好处就是不需要去重和排序两到工序,大部分选择器引擎都是过滤法。
个人感觉过滤法只需要经过一次查找,得到结果之后,剩下只需要过滤操作就可以了,这样在大部分情况下都可以在一开始就得到比较小的结果集,所以相对效率较高。但是如果通过*之类的选择符,那就不行了,本身*这样的选择是就是包含所有的内容,自然就效率较差。
除此以外,其中CSS选择器中的#id > .class也是同样的道理。

你可能感兴趣的:(CSS)