jquery .not选择器导致错误

时间:2010-09-28 21:12:31

标签: jquery

代码:

 if (!($.browser.msie && $.browser.version.substr(0, 1) == '5')){
        $('ul a span', '#menu'.not('{Developers}')).css('color', 'rgb(210,210,210)').hover(
            function(){ $(this).animate({color: 'rgb(255,255,255)'}, 500); },
            function(){ $(this).animate({color: 'rgb(210,210,210)'}, 200); }
        );
  }

这看起来像是正确的语法吗?它正在工作,但它正在抛出错误。不是一个函数。我在我的主页面加载的menu.js中调用此函数。它不是准备好的文档,除了错误之外它正在工作。如果它不工作,我会说我的核心jq库没有先加载,但确实如此。感谢帮助!注意,:不起作用,所以请不要建议我使用它。谢谢!

4 个答案:

答案 0 :(得分:3)

如果你想使用jQuery函数.not,你需要在jQuery对象上调用它(目前你正试图在字符串上调用它)。这是一个例子:

$('ul a span', '#menu').not('{Developers}').css
                      ^--- changes here ---^

如果你的名字中有 选择 ,那么它是:not,而不是.notreference),它需要成为选择器字符串的一部分。但是你在后面的问题中说过你尝试过:not并且它没有用(我不确定你在哪里或如何尝试:not)。

我认为该代码存在另一个问题,因为.not:not都期望选择器(.not也允许元素/ jQuery实例或函数)和选择器{{ 1}}无效。

从你的评论中看,除了异常以外,我只能猜测 else 正在改变元素的背景,因为引用的代码会失败(抛出异常,即除非您已将'{Developers}'函数添加到not),否则根本不会输入String.prototype函数,更不用说$部分了。

如果您的目标是为与ID css的元素下的选择器ul a span匹配的跨距背景着色,则该文本包含“{Developers” “,你需要使用menu伪类(取自CSS3,但jQuery支持它):

:contains

Live example

如果您更喜欢将$("#menu ul a span:not(:contains('{Developers}'))").css(... 作为上下文参数传递的表单:

#menu

Live example ...但是jQuery会有效地处理它们。

答案 1 :(得分:1)

假设你正确粘贴了代码,你就错过了一个')'

jQuery .not() info

if (!($.browser.msie && $.browser.version.substr(0, 1) == '5')){
        $('ul a span', '#menu').not('{Developers}').css('color', 'rgb(210,210,210)').hover(
            function(){ $(this).animate({color: 'rgb(255,255,255)'}, 500); },
            function(){ $(this).animate({color: 'rgb(210,210,210)'}, 200); }
        );
  }

答案 2 :(得分:1)

我可以在你的代码中看到拼写错误

if (!($.browser.msie && $.browser.version.substr(0, 1) == '5')){
  $('ul a span', '#menu').not('{Developers}').css('color', 'rgb(210,210,210)').hover(
    function(){ $(this).animate({color: 'rgb(255,255,255)'}, 500); },
      function(){ $(this).animate({color: 'rgb(210,210,210)'}, 200); }
    );
}

在您的代码中

 $('ul a span', '#menu'.not('{Developers}')).css...

但它应该是

$('ul a span', '#menu').not('{Developers}').css...

你缺少一个括号,你也需要一个。

答案 3 :(得分:0)

... $('ul a span', '#menu').not( .... 我觉得缺少一个括号?或者它应该是选择器的一部分?