2017-09-15 47 views
1

因此,這主要適用於,但唯一可用的網址是指定爲「Blog」的網址。所有帶#的錨點引用都是平滑滾動的,但我網頁上的所有外部鏈接都沒有做任何事情。包含#時禁用href鏈接,但啓用所有其他

我可以用只包含帶「#」的href鏈接的方式寫預防默認值嗎?我在整個頁面中都有圖片鏈接,並且想要一個簡單的方法來管理它,而不是指出每個網址。

<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) { 
    if($(this).data('hover') !== "Blog"){ 
    event.preventDefault(); 


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

</script> 

回答

0

var doc = document; 
 
var myList = doc.getElementsByClassName("snip1143")[0]; 
 
var myListItems = myList.children; 
 
var isHash = false; 
 
var href; 
 
for (var i = 0; i < myListItems.length; i++) { 
 
    href = myListItems[i].firstChild.getAttribute('href'); 
 
    isHash = href.includes("#"); 
 
    if(!isHash){ 
 
    myListItems[i].firstChild.addEventListener('click', function(evt) { 
 
     event.preventDefault(); 
 
    }); 
 
    myListItems[i].classList.add("strike"); 
 
    } 
 
}
.strike{ 
 
    text-decoration: line-through; 
 
}
<ul class="snip1143"> 
 
    <li><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> 
 
</ul>

-1

直接SO編碼的,我希望我猜中了:

$(document).on('click', 'a', function(e) { 
    if ($(this).attr('href').indexOf('#') !== -1) 
    e.preventDefault(); 
}; 
+0

的URL鏈接工作,但遺憾的是沒有滾動作品爲錨鏈接。 –

+0

提醒我如果鏈接沒有指定'href',會發生什麼情況。我很確定這段代碼會拋出一個異常......特別是因爲你的目標是每個錨標籤。另外,爲什麼要使用'$(this).attr('href')'而不是'this.href'? jQuery所有的東西,我猜... .../ – canon

+0

@SamT如果通過「沒有滾動工作的錨鏈接」你的意思是動畫的效果,這可能是因爲你是在文檔初步渲染後創建鏈接。真的嗎?如果是這樣,讓我知道,我會改變我的第一行('$('a')。on('click',function(e){')into'$(document).on('click',' a',function(event){'。 –

相關問題