2012-01-12 18 views
4

ではありません。jQueryの `is`は、私はHTMLメニュー以下のいる機能

<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'); 

がエラーMSG .is is not a functionを取得しておくことを言います。どうして? .isは明らかに機能です。

ご迷惑をおかけして申し訳ございません。

+0

「はっきりと」と慎重にしてください。すべての関数がすべての "オブジェクトの型"で定義されているわけではありません - この場合、 'typeof(String.prototype.is)== 'undefined'' – Piskvor

+0

また、間違った綴りがあります。 :) – BNL

答えて

9

prop()メソッドを呼び出す前にis()hrefプロパティを文字列として返しています。

文字列にはis()メソッドがありません。

試してください。

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

これを1つのセレクタに組み合わせることもできますが、

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

is()戻りtrue又はfalse場合にマッチした要素の任意セレクタと一致していることに注意してください。 is()を使用する場合は、次の形式を使用できます。

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

attribute equals selector

+0

これを説明してくれてありがとう。 – Iladarsda

2

prop()プロパティが設定されている場合を返すか、またはtruefalseまたは文字列を意味し、その値を参照してください - と全くis() -methodはブール値または文字列ではありません。

関連する問題