提问人:Charles Anderson 提问时间:12/8/2017 最后编辑:Charles Anderson 更新时间:12/8/2017 访问量:2056
jQuery 选择器中星号的效果
Effect of an asterisk in a jQuery selector
问:
在 Chrome(版本 63)的 DevTools 控制台中,我键入了以下内容:
请注意第二个查询中的额外星号。
两个查询都找到相同的元素,但第二个查询显然得到的结果略有不同。我也没想到星号是合法的。
有人可以解释一下星号有什么影响吗?
请注意,这不仅仅是询问查询中星号的使用情况,而是询问星号在紧挨着标识符时的效果。
答:
0赞
GreyRoofPigeon
12/8/2017
#1
星号代表任何元素。
#right
并且都应该返回相同的元素,因为 ID 是唯一的。*#right
评论
1赞
BoltClock
12/8/2017
是的,这个问题也说了很多,但这不是要问的。仔细查看结果。请注意,第二个结果中存在 prevObject 属性。
1赞
GreyRoofPigeon
12/8/2017
我没有注意到,但你是对的。不过我会留下我的答案,所以其他人不会犯和我一样的错误...... :)
5赞
Charles Anderson
12/8/2017
#2
好的,多亏了上面的评论,我明白了发生了什么。
#right
表示查找 ID 为“right”的元素。它永远不会返回多个元素。
*#right
means 查找 id 为 'right' 的任何元素,就像 means 查找具有该 ID 的任何 div 一样。如果具有该 ID 的元素多个,它将返回多个元素(不应该有,但 Chrome 至少允许您这样做。div#right
* #right
表示查找 ID 为“right”的元素,该元素也是另一个元素的后代。如果具有该 id 的多个元素有多个,它还将返回多个元素。
尽管最后一种情况可能看起来是多余的,但如果“html”元素是唯一具有“right”的元素,则它不会匹配任何内容。
评论
0赞
PRMan
9/3/2021
我猜星号版本的效率要低得多。
评论
any element with ID = 'right'
div#right
any div with ID = 'right'
* #right
*#right
*
#right