为什么queryselector调用中的选择器的顺序很重要?

时间:2014-02-06 18:06:16

标签: javascript

我想我可能在querySelector函数中发现了一个错误。似乎放置选择器的顺序会影响选择器是否被选中。

我正在尝试使用querySelector选择一个链接,并且我传递了3个不同的选择器,并且希望它选择其中任何一个,不幸的是,有时即使有明确的选择也不会匹配选择器除非我重新排列querySelector函数中选择器的顺序,否则在页面上匹配。

我要匹配的测试链接:    <a href="https://www.facebook.com/hashtag/coyotes?source=ftp"><span>#Coyotes</span> 60 recent posts</a>

此函数返回null

document.querySelector("a[href$='?source=fttp']","a[href$='?source=ftp']","a[href^='/topic/']")

此函数调用与链接

匹配
document.querySelector("a[href$='?source=ftp']","a[href^='/topic/']","a[href$='?source=fttp']")

这两个调用具有完全相同的选择器,只是以不同的顺序

我创建了一个演示问题的jsfiddle: http://jsfiddle.net/eB8nv/5/

有谁可以告诉我这里发生了什么,以及为什么发送到querySelector函数的选择器的顺序很重要?

1 个答案:

答案 0 :(得分:4)

querySelector()只接受一个参数 你不能这样做。

相反,您需要传递一个包含三个以逗号分隔的选择器的字符串。