2012-01-12 85 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() - 方法上的布爾或字符串。

相關問題