2016-05-17 3 views
0

ゴール内のhref位一致: それは別のものに追加されていない場合に素子から除去されるyesクラスを防ぎます。jQueryのif文:セクションIDは<a>

私は、次のコードを持っている:

jQuery(function($){ 
    $(window).scroll(function() { 
     var position = $(this).scrollTop(); 

     if ($('#services').length) { 
      $('section').each(function() { 
       var target = $(this).offset().top; 
       var id = $(this).attr('id'); 

       //if statement goes here i think? 

       if (position >= target - 79) { 
        $('.menu-wrap > ul > li > a').removeClass('yes'); 
        $('.menu-wrap > ul > li > a[href*="#' + id + '"]').addClass('yes'); 
       } 
      }); 
     }; 
    }); 

}) 

メニュー項目リンクの1つ(<a href="#~"/>が)のいずれかのidと同じである場合、私はposition >= targetをトリガするネストされたif文を書きたいのですがページのsection要素。このようにする必要があり

<div class="menu-wrap"> 
    <ul class="nav"><li><a href="#home"/></li><li><a href="second"/></li></ul> 
</div> 
<section id="home"></section> 
<section id="an-id-that-isnt-in-the-menu"></section> 
<section id="second"></section> 
+0

あなたのhtmlを共有してください。 –

+0

@ ADreNaLiNe-DJ編集 – user1395909

+0

最初に削除するはいクラスはありません。 –

答えて

0

あなたif文を要求したとして

HTML:あなたのJSで

var selector = ".menu-wrap > ul > li > a[href=#" + id + "]"; 
if ($(selector).length) { 

jQuery(function($){ 
    $(window).scroll(function() { 
     var position = $(this).scrollTop(); 

     if ($('#services').length) { 
      $('section').each(function() { 
       var target = $(this).offset().top; 
       var id = $(this).attr('id'); 
       var selector = ".menu-wrap > ul > li > a[href=#" + id + "]"; 

       if ($(selector).length > 0) { 
        if (position >= target - 79) { 
         $('.menu-wrap > ul > li > a').removeClass('yes'); 
         $('.menu-wrap > ul > li > a[href*="#' + id + '"]').addClass('yes'); 
        } 
       } 
      }); 
     }; 
    }); 
}); 
+0

ありがとうございました。しかし、それは本当に私がしたことをしません。より明示的に言うと、私は ''要素の1つに常に 'yes'クラスを持たせたいと思います。実際のスクリプトへのリンクは次のとおりです:http://hotglue.com.au/x_2013/ – user1395909