2009-08-17 1 views
2

クラスをリンクに適用しようとしているのは、現在のページがそのリンクと等しい場合のみです。JQuery - クラスを解析してifステートメントを使用して1つだけを変更する

私は、現在のページを見つける:

var pathname = window.location.pathname.split("/")[window.location.pathname.split("/").length - 1]; 

これは、ページのURLをつかみ、私のページの場合には「index.htmlを」です/最後、後には何でも保存されます。

ここでは、マウスの上にマウスを置くと、背景色が変化するリンク(アンカータグはdisplay:ブロック)を使用しています。

私の目標は、リンクされているページにアクセスしたときに、リンクされているかのように、すでに色付けされているリンクを持つことです。

だから私が使用:

if (pathname == $(".linkclass").attr("href")){ 
    $(this).addClass("linkHover"); 
} 

を今明らかに「これ」修飾子は動作しませんが、どのように私は、if文を渡しとなります。linkClassのいずれかのインスタンスだけに、このクラスを適用することを教えていますか? (そして.linkclassのすべてのインスタンスではなく、複数のインスタンスがあります)。

ありがとうございます!

$("#a.linkClass").each(
    function() { 
     if (pathname == $(".linkclass").attr("href")) { 
      $(this).addClass("linkHover"); 
     } 
    } 
); 

または類似:

答えて

5

私はそれを理解しましたが、誰かが同様の問題に遭遇した場合に対応します。

ifステートメントの代わりに、jqueryが独自の選択エンジンを使用して比較を処理できると考えました。最初に私は.equalsか何かを探したが、私はとそれを考え出し:

var pathname = window.location.pathname.split("/")[window.location.pathname.split("/").length - 1]; 
$(".linkClass[href='" +pathname+ "']").addClass("linkHover"); 

あなたはjQueryのセレクタ内の変数を使用して、属性に対して選択することができますので、これは完璧に動作します。

+0

nice - あなたは10秒で私を打つ! –

1

たぶん、このような何かを試してみてください。このアイデアは、すべてのメニューリンクアンカーを選択してから、それらを繰り返して、each()機能を使用してテストを実行することです。

+0

ああ、私はあなたがそのようなjqueryでfunction()を呼び出すことができることを忘れてしまった、ありがとう! –

+0

np、あなたはより速い方法を見つけたように見えます:) – jeef3

1
$("a.linkClass[href='" + pathname + "']").addClass("linkHover"); 

編集:Chrisは私にそれを打つ。彼のアップアップ。

+0

めちゃ...ほんの少し。あなたにも+1。 – womp

関連する問題