2016-10-23 79 views
1

所以我試圖讓我的導航使用jquery滾動,但由於某種原因,它不工作。我嘗試了一堆解決方案,但似乎都沒有工作。如何獲得href的值,並使其滾動到錨點

我的代碼:

HTML:

<nav class="column column-12 navigation nav"> 
     <ul> 
     <li class="active onee"><a href="#home" class="scrollable">Home</a></li> 
      <li class="onee"><a href="#portfolio" class="scrollable">Portfolio</a></li> 
      <li class="onee"><a href="#about" class="scrollable">About</a></li> 
       <li class="onee"><a href="#contact" class="scrollable">Contact</a></li> 
     </ul> 
     </nav> 
    </div> 
    </div> 

,我的所有部分具有相同的類主播HREF。

的jQuery:

$(document).ready (function() { 
$(".nav li").click(function() { 
$(".nav li").removeClass("active"); 
$(this).addClass("active"); 
}); 


var $clicked = $('a').attr('href').split("#").val(); 
$("a").click(function() { 
/*$(this).find('a').attr('href').split("#");*/ 
var url = $(this).attr("href"); 
$("body").animate({ 
/*scrollTop: $('.' + $kazkas).offset().top 
}, 1000);*/ 
scrollTop: $("." + url.split("#")).offset().top 
}, 1000); 
}); 
}); 

在這裏,我試圖讓點擊錨標記的值,並用它只是擺脫#和添加滾動我的身體「」所以定位我的部分類名稱。不幸的是,不起作用。 http://codepen.io/Limpuls/pen/YGdmkW

任何想法:

的完整代碼可以在我的codepen找到?

謝謝。

回答

1

拆分後,它會轉換成數組。比方說,

var url = "#home"; 

與url.split分裂(「#」)

var arr = url.split("#"); 
// arr[0] = '' 
// arr[1] = "home" 

打完,所以如果你不想把它分配給變量,那麼你可以直接使用如下

url.split("#")[1] 

此外,您還需要防止默認錨標記事件。要做到這一點,

$("a").click(function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

    // your code 

}); 
+0

它現在有效,但它不順利,只是跳。另一件事是它只滾動到有ID的部分,而不是類。我想知道爲什麼它不適用於類,如果我添加「。」到一個href值,它與id的工作,如果我擺脫「#」與拆分(「#」)。 – Limpuls

+0

請檢查我的更新答案。 –

+0

仍然跳躍。但現在至少工作:D我失去了一個流暢的滾動?筆:http://codepen.io/Limpuls/pen/YGdmkW – Limpuls