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

时间:2009-03-02 22:33:48

标签: 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])')

3 个答案:

答案 0 :(得分:50)

你想要:not selector

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

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

不应该是:

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