jquery选择器问题,例:找div元素 $("divid")和$("div[id="divid"]") 哪个性能高。
很想了解jquery在使用中的性能效率。又比如说找<inputtype="button"/>$("buttonid")与$("input:button[id="butti...
很想了解jquery在使用中的性能效率。又比如说找<input type="button" /> $("buttonid")与$("input:button[id="buttionid"]") 哪个性能好呢?求高手真心回答!
展开
4个回答
展开全部
你举着个例子里面,直接查ID最快。
因为ID是唯一的。比如你现在的DOM树一共有200个元素。
用第一种方法,直接查ID,可能选择器查询到第120个元素,就查到了ID符合的。然后因为ID是唯一的,选择器不用继续再查下去了,直接返回结果。这样进行的查找量就是120.
如果用第二种方法你先查符合input:button的。再查ID。表面上看是用两个条件限定范围。但因为input:button这种属性不是唯一的。选择器向下查询到一个后不会停,因为可能还有其他input:button,就只好继续查。直到遍历完所有200个元素才算完成第一次查询。然后再在返回的符合条件的结果中选择ID。比如一共有10个button,就又要在10个里面查,比如这次查到第6个ID符合。你第二种方法进行的查找量就是200+6=206.
因为ID是唯一的。比如你现在的DOM树一共有200个元素。
用第一种方法,直接查ID,可能选择器查询到第120个元素,就查到了ID符合的。然后因为ID是唯一的,选择器不用继续再查下去了,直接返回结果。这样进行的查找量就是120.
如果用第二种方法你先查符合input:button的。再查ID。表面上看是用两个条件限定范围。但因为input:button这种属性不是唯一的。选择器向下查询到一个后不会停,因为可能还有其他input:button,就只好继续查。直到遍历完所有200个元素才算完成第一次查询。然后再在返回的符合条件的结果中选择ID。比如一共有10个button,就又要在10个里面查,比如这次查到第6个ID符合。你第二种方法进行的查找量就是200+6=206.
追问
您好,谢谢你能回答这么多,对我收获很大。 我还想问一个问题,像你上面根据ID直接找元素打的比方,在第120个元素,我认为他的查找量是240次,因为元素是120次,再每个元素判断id是否等于divid. 又是120次,最终是240次 。 $("input:button[id="buttionid"]") 这个的看法我倒是和你一样。
展开全部
前者性能高,因为id是唯一的,而$("div[id="divid"]") 会遍历所有div的,找到属性id=divid的那一个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是 $("#divid")
$查找元素的时候,id 查找是最快的:$("#divid"),
其次元素名称,$("div"),
伪类查找是最慢的:$(".class1")
$查找元素的时候,id 查找是最快的:$("#divid"),
其次元素名称,$("div"),
伪类查找是最慢的:$(".class1")
更多追问追答
追问
。。。 别说应该啊! 我问的人都说应该,难道没有一个高手能肯定的指出一个且说出为什么?
追答
jQuery的文档,就这么写的,
你上面写错了,我给你纠正的,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$("#divid")高
$("input:button[id="buttionid"]")是用于精准定位的
$("input:button[id="buttionid"]")是用于精准定位的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询