2017-07-20 9 views
1

アルファベット順のナビゲーションバーにhrefを追加する関数を記述しました。私はそれを作って、それぞれのレターセクションにIDを与えました。例えば ​​"C"セクションがない場合には、それを無効にする#cにリンクするリンクにクラスを追加することができます。ここに私がこれまで持っているものは次のとおりです。jQueryは、ドキュメントにリンクのhrefに一致するidが含まれているかどうかを検出します。

<ul class="no-bullet inline"> 
     <li><a class="scroller"><strong>A</strong></a></li> 
     <li><a class="scroller"><strong>B</strong></a></li> 
     <li><a class="scroller"><strong>C</strong></a></li> 
</ul> 

    <div class="space-above space-below letter-section"> 
     <h4 class="alpha-heading"><strong>A</strong></h4> 
     <ul class="no-bullet"> 
      <li><a class="naming" href="#">Benny Goodman</a></li> 
      <li><a class="naming" href="#">Benny Goodman</a></li> 
      <li><a class="naming" href="#">Benny Goodman</a></li> 
     </ul> 
    </div> 
<div class="space-above space-below letter-section"> 
     <h4 class="alpha-heading"><strong>A</strong></h4> 
     <ul class="no-bullet"> 
      <li><a class="naming" href="#">Benny Goodman</a></li> 
      <li><a class="naming" href="#">Benny Goodman</a></li> 
      <li><a class="naming" href="#">Benny Goodman</a></li> 
     </ul> 
    </div> 
<script> 
function alphaLink() { 
     var alphaLink = $(this); 
     var alphaLinkRef = "#" + alphaLink.text().toLowerCase(); 
     $(alphaLink).attr("href", alphaLinkRef); 
    }; 
    $('.scroller').each(alphaLink); 

    //assigns each content section an ID 

    function alphaID() { 
     var section = $(this); 
     var sectionID = section.text().toLowerCase(); 
     $(section).attr("ID", sectionID); 
    }; 
    $('.alpha-heading').each(alphaID); 

linkMatch function(){ 
    var link = $(this); 
    if(link.length <= 0) { 
    $(this).addclass("disabled"); 
} 

$("scroller").each(linkMatch); 
</script> 
+0

です。ご質問はありますか?それは動作しませんか? –

+0

IDを検索して正常に機能することができません。 – stolercloud

答えて

0

私はエレミアのコードを取って、私がそれが必要なことをするために少し変更しました。お返事いただきありがとうございます。最終製品は

+0

です。私の評判は、私の評判を助けるために受け入れられたとマークする必要があります!それが助けてくれてうれしい。あなたがすでに考えているかもしれないことに注意するべき点は、findIDを先頭に#を付けずに文字列を渡すと、うまくいきません。 #を確認するロジックを追加し、存在しない場合は追加します。 –

0

あなたはこのようにすることができます。ここでは一例です:私はHREFは「#C」のようなものがある場合はlinkHref変数

+0

このコードにはいくつかのエラーがあります。一旦私が構文エラーを修正すると、これはほぼ成功しました。ただし、リンクされていないクラスだけでなく、すべてのリンクに無効なクラスを追加しています。 – stolercloud

+0

これはどういう意味ですか? – stolercloud

+0

関数linkMatch(index、elem){ var link = elem; var heading = $( "。アルファヘッディング"); var linkHref = link.attr( "href")。substring(1、link.attr( "href")); { if(linkHref!= heading [index] .getAttribute( "id")){ link.addClass( "disabled"); }}} $( "スクロール")各(関数(指数){ linkMatch(インデックス、$(この)); })。 これはほとんど機能しますが、すべてに無効になっています。 – stolercloud

0

lengthを書くのを忘れているので、

function linkMatch(index, elem){ 
    var link = elem, 
     heading = $(".alpha-heading"); 

    var linkHref = link.attr("href").substring(1, link.attr("href").length); 

    if(typeof(heading[index]) != "undefined") { 
     if(linkHref != heading[index].getAttribute("id")) { 
      link.addClass("disabled"); 
     } 
    } 
} 

$(".scroller").each(function(index) { 
    linkMatch(index, $(this)); 
}); 

編集 私はちょうど私のコードを編集した、取りますこれを見てください:

$(document).ready(function(){ 
    $('a').each(function(i,e){ 
    var href = $(this).attr('href') 
    if(!findID(href)){ 
     // Doesn't exist 
     $(this).addClass('disabled'); 
    } 
    }) 
    function findID(ID){ 
    var exists = false; 
    if($(ID).length > 0){ 
     exists = true; 
    } 
    return exists; 
    } 
}) 

これは役に立ちます。

UPDATED!申し訳ありませんが、クリックしたときではなくリンクを無効にしたかったのを見落としました。 Here is a JsFiddleリンクをhref = "$ find-someting-else"で調べると、クラスが無効であるのに対し、他のリンクは無効であることがわかります。

+0

私はこれをクリックしてページの読み込みを無効にする必要があります。 – stolercloud

+0

更新されました。それは –

関連する問題