jQuery选择器问题。 选择所有不启动的节点(字符串)

试图在这里组装一个相当复杂的jQuery选择器,并遇到麻烦。

基本上,我试图抓住1)没有“facebox”的“rel”的所有锚点, 并且 OR 2)没有以“mailto”开头的“href”。

这就是我一直在努力做的事情:

$('a[rel!=facebox], a[href!^="mailto"]') 

这种小变化似乎不起作用。 有没有更好的方法来解决这个问题?

这些选择器似乎单独工作,但不是连续坐在同一个选择器中时:

 $('a:not([rel=facebox]), a:not([href^=mailto])') 

最终解决方案:我们有一个胜利者!

 $('a:not([rel=facebox],[href^=mailto])') 

你想要:不是选择器

 $("a:not([rel=facebox],[href^=mailto])"); 

编辑:我偷了你的答案是正确的

好的Jeremy Ricketts先生。 Jquery搞砸了你的脑袋。 你试图链接选择器逻辑……有点像jQuery如何链接方法。 在你的第二个选择器( a[href!^="mailto"] )中,你试图说…不是包含THIS属性的东西。 你所说的是“搜索所有不是mailto的东西”和“搜索包含mailto的所有东西”。 它就像滤光片……如果你过滤红灯……并在顶部抛出一个黄色滤光片…你没有过滤掉橙色光……你只是过滤掉了所有东西(对于类比的延伸而言,很抱歉) 。 所以你要做的是使用伪选择器:不。

像这样 – $(a:not([href^=mailto:])).whateverJqueryMethodYouWant();

编辑:那么你现在已经正确地指出了这个问题……你可以这样做 – $(a:not([href^=mailto:] , [rel=facebox])).whateverJqueryFunctionYouWant();

不应该是:

 $("a:not([rel='facebox'],[href^='mailto'])");