2017-02-15 20 views
0

これはよくある問題のようですが、まだ解決策が見つかりませんでした。私は私のメニューで現在のページを強調したいと思います。 JavascriptとCSSが最良の選択肢だと思われますが、PHPクエリを含むページでは動作しません。Javascriptを使用してメニュー内の現在のPHPページを強調表示CSS

HTML

<ul class="topnav" id="myTopnav"> 
<li><a href="about.php">About/Contact</a></li> 
<li><a href="portfolios.php?page=travel-nature">Travel &amp; Nature</a></li> 
<li><a href="portfolios.php?page=video">Video</a></li> 
<li><a href="portfolios.php?page=editorial">Editorial</a></li> 
<li><a href="portfolios.php?page=corporate">Corporate</a></li> 
</ul> 

Javascriptを

<script> 
$(function(){ 
$("a").each(function() { 
if ($(this).prop("href") === window.location) { 
    $(this).addClass("current"); 
} 
}); 
}); 
</script> 

それはabout.php」のためではなく、 'portfolios.php' ページのいずれかのために働きます。

私はまた、ページのカップルに

<script> 
document.write(window.location); 
</script> 

を追加しましたし、それがPHPのクエリを含む完全なパスを返しますので、私はwindow.location作品を知っています。 おそらくここには既に回答がありますが、私はそれを見つけることができません!

が欠落していた何 を解決し、あなたは何をしているかを知っていれば明らかであるが、ではない私には、それがabout.phpページに存在していたportfolios.phpページの最後に<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>ました。

+0

'Window.location'は実際には[' Location'](https://developer.mozilla.org/en-US/docs/Web/API/Location)オブジェクトですので、1つとして使用できます。あなたが働いているのは、 'Location.toString()'が完全なURLを返すからです。 – apokryfos

+0

'window.location.href'と比較してみてください – charlietfl

+0

http://stackoverflow.com/questions/33848734/how-to-highlight-menu-link-of-current-page?rq=1 – Robot70

答えて

1

window.location.href

$("a").filter(function() { 
    return this.href === window.location.href;  
}).addClass("current"); 
+0

それは残念ながら働かなかった。同じ結果... –

+0

あなたのコードの実行後にjavascriptによって追加されるリンクはありますか? – charlietfl

+0

いいえ、コードは上記のようにページに表示されます。 –

0

と比較してみ条件が

$("a").each(function() { 
    $(this).removeClass("current"); 
    if ($(this).attr("href") == location.href.substr(location.href.lastIndexOf('/') + 1)) { 
     $(this).addClass("current"); 
    } 
}); 
+0

どちらもうまくいきませんでした。 –

0

を変更する必要がある場合は、あなたの厳密な比較===は、あなたのロジックを壊しています。 window.loation.toString()で厳密な比較を行うと、それは機能します。または、代わりに==と大まかに比較できます。型変換によって比較が中断されることはありません。

+0

これは '=='であることを意図していましたが、違いはありません。 –

関連する問題