关于选择器的问题

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

<div style="width:500px;">
	<ul>
		<span>span (子节点)</span>
		<li>li (子节点)
			<span>span (孙节点)</span>
		</li>
	</ul>   
</div>

$(document).ready(function(){
	$("ul").find("span").css({"color":"red"});
});

结果:
在这里插入图片描述
这种 a().b()这种先执行前者后执行后者是由js的求值顺序决定的,所以只能是先前再后。如果不先求值a(),我们自然也就不能知道b()该在那个对象上面调用。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值