尝试在这里组装一个相当复杂的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])')
答案 0 :(得分:50)
答案 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'])");