jquery选择器问题,例:找div元素 $("divid")和$("div[id="divid"]") 哪个性能高。

2024-11-06 14:41:53
推荐回答(4个)
回答(1):

你举着个例子里面,直接查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.

回答(2):

前者性能高,因为id是唯一的,而$("div[id="divid"]") 会遍历所有div的,找到属性id=divid的那一个

回答(3):

应该是 $("#divid")
$查找元素的时候,id 查找是最快的:$("#divid"),
其次元素名称,$("div"),
伪类查找是最慢的:$(".class1")

回答(4):

$("#divid")高
$("input:button[id="buttionid"]")是用于精准定位的