2014-02-06 45 views
0

我想我可能在querySelector函数中发现了一个bug。似乎选择器的放置顺序影响选择器是否被选中。为什么查询选择器调用中选择器的顺序很重要?

我试图选择一个使用querySelector的链接,并且正在传递3个不同的选择器,并且希望它选择这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功能的问题?

回答

4

querySelector()只需要一个参数。
你不能那样做。

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

+0

或者使用['querySelectorAll'](https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll)代替 – kei

+2

@kei:那根本没有帮助。 – SLaks

+0

Doh!谢谢Slaks! – user280109