0

Jqueryを使用して、特定のhrefリンクを含むリストの個々のメンバーを選択しています。

これまでの私のコードは次のとおりです。

<script type="text/javascript" 
 src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    var page = jQuery(location).attr('href'); 
    if(page $= "home"){
        $("'li':contains('index')").addClass("active")};
    if(page $= "features"){
        $("'li':contains('features')").addClass("active")};
    if(page $= "people"){
        $("'li':contains('people')").addClass("active") };
    if(page $= "accounts"){
        $("'li':contains('accounts')").addClass("active")};
    if(page $= "blog"){
        $("'li':contains('blog')").addClass("active")};  
    if(page $= "faq"){
        $("'li':contains('faq')").addClass("active")};                      
});
</script>

HTMLコードは次のようになります。

<ul id="navigation">
  <li><a href="/index" title="Home">Home</a></li>
  <li><a href="/features" title="Features">Features</a></li>
  <li><a href="/people" title="People">People</a></li>
  <li><a href="/accounts" title="account">accounts</a></li>
  <li><a href="/blog" title="Blog">Blog</a></li>
  <li><a href="/faq" title="FAQ">FAQ</a></li>
</ul>

これを機能させることができないようですか?包含機能を正しく使用していますか?

4

1 に答える 1

2

:contains要素のを検索しinnerTextます。:hasスキャンしますinnerHTML

また、href属性については、属性セレクターを使用する必要があります:[href="index"]

$("li:has(a[href*='index'])")

これにより、hrefを含むタグを<li>含むが選択されます。<a>"index"

アップデート:

if(page $= "home")

あなたは実際にそれをすることはできません。文字列が別の文字列で終わっているかどうかを確認したい場合は、正規表現(または部分文字列)を使用してください。

jQuery(location).attr('href'); 

なぜこれにjQueryを使用するのですか?ただやってくださいlocation.href。さらに良いことに、を使用しますlocation.pathname。次に、ifブロックを失う可能性があり、これを行うだけです。

var page = location.pathname;
$("li:has(a[href*='"+page+"'])").addClass("active");

(あなたがする必要があるかもしれませんpage.replace('home', 'index')

于 2012-07-12T16:17:43.753 に答える