我有一些html / jquery在点击链接时向上和向下滑动div以显示/隐藏它:
<ul class="product-info">
<li>
<a href="#">YOU CLICK THIS TO SHOW/HIDE</a>
<div class="toggle">
<p>CONTENT TO SHOW/HIDE</p>
</div>
</li>
</ul>
$('div.toggle').hide();
$('ul.product-info li a').click(function(event){
$(this).next('div').slideToggle(200);
}
我的问题是:如何使用preventDefault()
来阻止链接充当链接,并将#
添加到我的网址末尾&amp;跳到页面顶部?
我无法弄清楚正确的语法,我只是不断收到一条错误,指出preventDefault()不是函数。
答案 0 :(得分:175)
尝试类似:
$('div.toggle').hide();
$('ul.product-info li a').click(function(event) {
event.preventDefault();
$(this).next('div').slideToggle(200);
});
中有关该页面的页面
答案 1 :(得分:37)
建议你不要使用return false
,因为结果会发生三件事:
所以在这种情况下,你应该只使用event.preventDefault();
Archive of article - jQuery Events: Stop (Mis)Using Return False
答案 2 :(得分:36)
将 href
属性设置为href="javascript:;"
<ul class="product-info">
<li>
<a href="javascript:;">YOU CLICK THIS TO SHOW/HIDE</a>
<div class="toggle">
<p>CONTENT TO SHOW/HIDE</p>
</div>
</li>
</ul>
答案 3 :(得分:11)
或者,你可以从click事件中返回false:
$('div.toggle').hide();
$('ul.product-info li a').click(function(event){
$(this).next('div').slideToggle(200);
+ return false;
});
这将阻止A-Href被触发。
但请注意,出于可用性的原因,在一个理想的世界中,对于想要在新标签中打开链接的人来说,href应该仍然在某个地方;)
答案 4 :(得分:11)
<ul class="product-info">
<li>
<a href="javascript:void(0);">YOU CLICK THIS TO SHOW/HIDE</a>
<div class="toggle">
<p>CONTENT TO SHOW/HIDE</p>
</div>
</li>
</ul>
使用
的javascript:无效(0);
答案 5 :(得分:9)
这是我刚刚测试过的非JQuery解决方案,它的工作原理。
<html lang="en">
<head>
<script type="text/javascript">
addEventListener("load",function(){
var links= document.getElementsByTagName("a");
for (var i=0;i<links.length;i++){
links[i].addEventListener("click",function(e){
alert("NOPE!, I won't take you there haha");
//prevent event action
e.preventDefault();
})
}
});
</script>
</head>
<body>
<div>
<ul>
<li><a href="http://www.google.com">Google</a></li>
<li><a href="http://www.facebook.com">Facebook</a></li>
<p id="p1">Paragraph</p>
</ul>
</div>
<p>By Jefrey Bulla</p>
</body>
</html>
答案 6 :(得分:5)
经过多次操作后,当页面最终进入链接时,您可以执行以下操作:
jQuery("a").click(function(e){
var self = jQuery(this);
var href = self.attr('href');
e.preventDefault();
// needed operations
window.location = href;
});
答案 7 :(得分:4)
为什么不在css中执行此操作?
取出锚标记中的'href'属性
<ul class="product-info">
<li>
<a>YOU CLICK THIS TO SHOW/HIDE</a>
<div class="toggle">
<p>CONTENT TO SHOW/HIDE</p>
</div>
</li>
</ul>
在你的CSS中,
a{
cursor: pointer;
}
答案 8 :(得分:4)
使用inline onclick
,IIFE
,event
和preventDefault()
在Javascript中执行此操作的另一种方法:
<a href='#' onclick="(function(e){e.preventDefault();})(event)">Click Me</a>
答案 9 :(得分:3)
如果停止传播事件不会打扰你,只需使用
即可return false;
在你的处理程序的末尾。在jQuery中,它可以防止默认行为并阻止事件冒泡。
答案 10 :(得分:2)
您可以使用事件调用中的return false;
来停止事件传播,它的作用就像event.preventDefault();
否定它一样。或者,您可以在href属性中使用javascript:void(0)
来评估给定的表达式,然后将undefined
返回到元素。
当它被调用时返回事件:
<a href="" onclick="return false;"> ... </a>
无效案例:
<a href="javascript:void(0);"> ... </a>
中查看更多相关信息