2012-01-12 83 views
4

我有以下HTML菜单:jQuery的`is`不是一个函数

<ul> 
    <li><a href="index.html">Index Page</a></li> 
    <li><a href="#some-page">Some Page</a></li> 
</ul> 

让我们说var url = "some-page";

$('#menu li a').prop('href') 
        .is('#' + url) 
        .parrent() 
        .addClass('active'); 

我不断收到错误味精.is is not a function。为什么? .is显然是一个功能。

任何建议非常感谢。

+0

小心“清楚”。并非每个函数都在每个“对象类型”上定义 - 在这种情况下,typeof(String.prototype.is)=='undefined'' – Piskvor 2012-01-12 11:53:56

+0

您也拼写了父项错误。 :) – BNL 2012-01-12 11:54:05

回答

9

您在is()之前调用的prop()方法正在将href属性返回为字符串。

字符串没有is()方法。

尝试;

$('#menu li a').filter('[href="' + url + '"]').parent().addClass('active'); 

虽然你可以结合到这一个选择;

$('#menu li a[href="' + url + '"]').parent().addClass('active'); 

注意is()返回truefalse如果一个匹配元素的任何选择器相匹配;所以如果你想使用is(),可以使用下面的表格;

$('#menu li a').each(function() { 
    if ($(this).is('[href="#' + url +'"]')) { 
     $(this).parent().addClass('active'); 
    } 
}); 

看看属性被设置在attribute equals selector

+0

非常感谢您解释这一点。 – Iladarsda 2012-01-12 12:04:18

2

prop()退货或它的价值,这意味着truefalse或串 - 并没有is() - 方法上的布尔或字符串。

相关问题