2017-06-22 48 views
-1

我有一個具有多個內部鏈接的導航欄。如何防止href =#激活jQuery功能的多個實例

<li><a href="#home">Home</a></li> 
<li><a href="#products">Products</a></li> 
<li><a href="#contactus">Contact Us</a></li> 

而且,我有一個每2秒運行一次的jQuery函數。

<script> 
$(function() { 
    setInterval(playSlideShow(), 2000); 

    function playSlideShow() { 
     // codes to change slide 
    } 
}); 
</script> 

的問題是每當我在導航欄鏈接點擊(與href="#"),它創建間隔的新實例運行在每2秒playSlideShow()。例如,如果我點擊5次導航欄鏈接,幻燈片會在2秒內更改5次,而不是2秒內1次。

如何預防?

謝謝。

+2

你的代碼不被點擊的錨的實際代碼。你能提供真實的代碼嗎? – Adder

回答

2

使用event.preventDefault()

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

這將防止重新加載頁面的鏈接。需要注意的是錨需要被包裹在一個元素與類navbar這個例子的工作:

<ul class="navbar"> 
    <li><a href="#home">Home</a></li> 
    <li><a href="#products">Products</a></li> 
    <li><a href="#contactus">Contact Us</a></li> 
</ul> 
+0

謝謝。它完美的作品。 –

1

商店的間隔在一個變量,被點擊那麼當它,要麼刪除區間或忽略它。這裏有一個例子

//Initialize timer variable 
var timer = false; 

// Start timer 
timer = setInterval(timerName, 1000); 

// End timer 
clearInterval(timer); 
timer = false; 

這就是你所需要的,在點擊事件只是添加的所有功能:

if(!timer){ 
    // Timer is off, create new interval 
}