2012-02-05 17 views
1

現在のページを強調表示できるjQueryメニューを作成しようとしています。方法は、クラスcurrentを選択して追加します。ここでjQuery現在のページ.find()と.each()関数

はhtmlです:

<div class="menu_items"> 
<ul class="ul_items" id="navigation"> 
    <li><a href="index.php">1</a></li> 
    <li><a href="index.php?pg=2">2</a></li> 
    <li><a href="index.php?pg=3">3</a></li> 
    <li><a href="index.php?pg=4">4</a></li> 
    <li><a href="index.php?pg=5">5</a></li>    
</ul> 
</div> 

そして、私はそのような何か作ってみました:CSSコードが大きく、などである

$(document).ready(function(){ 
    $("#navigation").find("a[href*='"+window.location.href+"']").each(function(){ 
      $(this).addClass("current") 
    }); 
}); 

ので、完全なコードは、私が思うjsFiddle

であるがJqueryのコード部分で何かが正しく定義されていないということです。私はこれを試してみる:

var a = $("#navigation").find("a[href*='"+window.location.href+"']"); 
alert(a); 

私は[Object] [Object] alertを取得します。助けてもらえますか?

ありがとうございます。

答えて

2

jQueryメソッドは常にjQueryオブジェクトを返します。内容を確認したい場合は、一致する要素の数を確認するには.length、個々のDOMノードには[0]を入力してください。またはそれ以上に - console.logそれであなたはそれのすべてを簡単に調べることができます。

あなたの問題は、location.hrefが全体のURL(http://...)を返しますが、あなたのリンクにはそれが含まれていません。 location.pathnameを使用してパスを取得できますが、現在のページを強調表示する実際の正しい方法は、サーバー側で行うことです。このような目的でJSを使用する理由はありません。

+0

どうもありがとうございました。助けになる。私はサーバー側でそれをやったが、可能ならば同じエスケープサーバー側にしようとしている。私が得るものを見るだろう。 –

0

マッティです。しかし、あなたが試みることができるのは、hrefに一致する正確な値を得るsplit()メソッドです。

作業例:http://jsfiddle.net/ylokesh/AqmHr/2/

<script> 
$(document).ready(function() { 

    //capture URL 
    //var tempURL = window.location.href; 

    var tempURL = "http://www.websiteurl.com/index.php?pg=2" 
    var urlMatch = tempURL.split('.com')[1].split('/')[1]; 
    var hrefVal = $("#navigation a:eq(1)").attr('href'); 
    $("#navigation").find("a[href='"+hrefVal+"']").html('Current Page'); 
}); 
</script> 
0
//var url = 'file://one/two/three/index.php?pg=2'; // use this if testing on desktop 
var url = window.location.href; 
var filepath = url.lastIndexOf("/") + 1; 
var matchThis = url.substr(filepath); 
$('#navigation').find("a[href*='"+matchThis+"']").addClass('current'); 

.each

信用のための必要はありません - https://stackoverflow.com/a/1302339/3377049

関連する問題