2016-05-17 25 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'); 
       } 
      }); 
     }; 
    }); 

}) 

我想寫一個嵌套if語句,將觸發position >= target如果菜單項鍊接之一(<a href="#~"/>)相同的任何id頁面上的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:

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

有了您的JS:

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

謝謝你的回答。但是,它並沒有真正做我以後的事情。爲了更加明確,我希望其中一個''元素總是有'yes'類。這裏有一個鏈接腳本的鏈接:http://hotglue.com.au/x_2013/ – user1395909