2017-09-12 57 views
0

我正在使用JavaScript進行平滑滾動(在腳本標記下方),並且還有錨鏈接的href。所有的錨都工作正常,但JavaScript似乎是禁用URL的href。你能幫我重寫一下,這樣也能起作用嗎?URL href失敗:錨點,URL和Javascript

<ul class="snip1143"> 
    <li class><a href="#home1" data-hover="Home">Home</a></li> 
    <li><a href="#about1" data-hover="About">About</a></li> 
    <li><a href="#experience1" data-hover="Work">Work</a></li> 
    <li><a href="URL HERE" data-hover="Blog">Blog</a> </li 
    <li><a href="#contact1" data-hover="Contact">Contact</a></li> 

<script> 

    $(document).on('click', 'a', function(event) { 
     event.preventDefault(); 

     $('html, body').animate({ 
      scrollTop: $($.attr(this, 'href')).offset().top 
     }, 500); 
    }); 

</script> 
+2

之前你應該修理你的標記。第四李需要一個結束標籤。並且你的ul需要一個結束標籤 –

回答

0

event.preventDefault()將阻止默認值,這對於錨點將轉到該url。您可能想要爲要設置動畫的錨添加一個類,並僅選擇這些類,而不是在所有錨標記上防止默認。

+0

如果可能,請詳細說明代碼。我有點新手。感謝您的輸入。 –

0

由於您對每個元素都有唯一的data-hover,因此我們只需要驗證data-hover屬性的值即可對其進行過濾。

<script> 

    $(document).on('click', 'a', function(event) { 
     if($(this).data('hover') !== "Blog"){  
     $('html, body').animate({ 
      scrollTop: $($.attr(this, 'href')).offset().top 
     }, 500); 
    }// since i noticed that you want to redirect the page once the Blog link is clicked 
    }); 

</script> 

讓我知道如果這可以幫助你解決你的問題。

+0

謝謝,這對我有用!不幸的是,所有其他的href鏈接現在在菜單欄上的「博客」之外被禁用。有沒有辦法讓我解決這個問題?另一個提到可能使用一個類。你能幫我實現嗎? –

+0

嗨,如果你想設置鏈接(hrefs)的默認動作,你只需要在條件語句中爲它們設置一些驗證,比如說「博客」,「工作」和「聯繫人」標籤(或按鈕或不管你怎麼稱呼它們),如果你想讓這3個執行默認的重定向動作,在這裏包括它們($(this).data('hover')!==「Blog」){ ($(this).data('hover')!==「Blog」)||($(this).data('hover')!==「Work」)||($(this).data 'hover')!==「Contact」)){然後插入event.preventDefault();我希望你對我的回答有了啓發。 – jhek

+0

這些其他URL鏈接遍及我的頁面(不在菜單欄上),但我需要它們工作。我知道如何讓菜單欄中的URL鏈接工作,但那些散佈在我的頁面中的其他鏈接呢?他們都是殘疾人士。什麼是我可以在我的情況下挑出這些的方法? –