Javascript Href="#&引用;Don';卷轴
我对JS很陌生,所以我想知道你是否知道如何解决这个问题 我的代码中有当前的Javascript Href="#&引用;Don';卷轴,javascript,html,Javascript,Html,我对JS很陌生,所以我想知道你是否知道如何解决这个问题 我的代码中有当前的 <a href='#' class="closeLink">close</a> 它运行一些JS来关闭一个盒子。我遇到的问题是,当用户单击链接时,href=“#”会将用户带到页面顶部 如何解决这个问题,使它不会这样做?i、 e.我不能使用onclick=“return false”之类的东西,因为我认为这会阻止JS工作 谢谢通常的方法是从javascript点击处理程序返回false。这既可以
<a href='#' class="closeLink">close</a>
它运行一些JS来关闭一个盒子。我遇到的问题是,当用户单击链接时,href=“#”会将用户带到页面顶部
如何解决这个问题,使它不会这样做?i、 e.我不能使用onclick=“return false”之类的东西,因为我认为这会阻止JS工作
谢谢通常的方法是从javascript点击处理程序返回false。这既可以防止事件冒泡,又可以取消事件的正常操作。根据我的经验,这通常是你想要的行为 jQuery示例:
$('.closeLink').click( function() {
...do the close action...
return false;
});
如果你想简单地阻止正常的行为,你可以使用
如果代码通过eventObject,则可以使用
preventDefault()
;返回false也有帮助
mylink.onclick = function(e){
e.preventDefault();
// stuff
return false;
}
返回false是答案,但我通常会这样做:
$('.closeLink').click( function(event) {
event.preventDefault();
...do the close action...
});
在运行代码之前停止操作。尽管href='#'似乎非常流行,但它不是JavaScript的神奇关键字,它只是指向空锚的常规链接,因此毫无意义。您基本上有两种选择:
关闭
围绕链接包装一个div语句,让链接返回false,在单击时向div添加javascript功能
<div onClick="javascript:close();">
<a href="#" onclick="javascript:return false;">Close</a>
</div>
JavaScript版本:
myButton.onclick=function(e){
e.preventDefault();
// code
return false;
}
$('.myButtonClass').click(function(e){
e.preventDefault();
// code
return false;
});
jQuery版本:
myButton.onclick=function(e){
e.preventDefault();
// code
return false;
}
$('.myButtonClass').click(function(e){
e.preventDefault();
// code
return false;
});
这只是把工作做好而已!:) 解决此问题的最简单方法是在英镑符号后添加另一个字符,如下所示:
<a href='#a' class="closeLink">close</a>
问题解决了。是的,就这么简单。有些人可能讨厌这个答案,但他们不能否认它是有效的
只需确保您没有实际将某个部分分配给“a”,否则它将转到页面的该部分。(我不像以前那样经常看到这一点,但默认情况下,“#”会自动进入页面顶部。很抱歉回答得太晚,但没有人提到这一点。
只需将其设置为
您可以使用的一个选项是不要使用href=“#”
,而是href=“javascript:;”
这将允许您在不滚动的情况下运行onclick处理程序
比如说
<a href="javascript:;" onclick="doSomething()">Do Something</a>
使用
href=“JavaScript:Void(0);”
像ROFLwTIME示例一样,一种简单的方法是在href中放置两个。这不常见,但对我有用
<a href='##' >close</a>
+1-注意,如果您没有使用jQuery,请确保检查window.event是否存在,如果存在,请在返回false之前将window.event.returnValue=false-除非您这样做,否则IE不会始终停止冒泡。-1。当这起作用时,函数开头的event.preventDefault
是正确的方法。@David-我已经更新以记录您的评论。我的经验是,在几乎所有情况下,想要的行为都是取消正常操作并防止冒泡。YMMV.-1缩回。:-)但是,如果在返回false之前存在未捕获的异常,则将遵循链接(或者在OP情况下为#)。+1表示'#“只是一个没有特殊意义的空锚。。。谢谢。return false
有效,但它不是所有情况下的答案return false
调用event.preventDefault
和event.stopPropagation
StopperPagation
将阻止任何附加到该对象的其他事件触发。你可能想要也可能不想要。感觉像黑客,但确实是一个简单的修复。这太棒了!这个解决方案给我的生活带来了一些优雅的简单性。谢谢你,绝妙的解决方案!我喜欢。简单明了。在你的答案中再加一点描述