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'])");