2017-06-22 55 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 
}