我对JS还不是很熟悉 - 所以想问一下,你知道如何解决这个问题吗?
目前我在我的代码中有以下内容
<a href='#' class="closeLink">close</a>
我有一段运行JS来关闭一个框的代码。问题在于当用户点击链接时,href="#"会将用户带到页面顶部。
如何解决这个问题,使其不会发生这种情况?也就是说,我不能使用像onclick="return false"这样的东西,因为我想象中那会阻止JS工作。
谢谢
我对JS还不是很熟悉 - 所以想问一下,你知道如何解决这个问题吗?
目前我在我的代码中有以下内容
<a href='#' class="closeLink">close</a>
我有一段运行JS来关闭一个框的代码。问题在于当用户点击链接时,href="#"会将用户带到页面顶部。
如何解决这个问题,使其不会发生这种情况?也就是说,我不能使用像onclick="return false"这样的东西,因为我想象中那会阻止JS工作。
谢谢
通常的做法是在javascript的click事件处理程序中返回false。这样既可以防止事件冒泡,又可以取消事件的正常操作。根据我的经验,这通常是您想要的行为。
jQuery示例:
$('.closeLink').click( function() {
...do the close action...
return false;
});
如果你只是想简单地阻止默认的操作,可以使用 preventDefault 来代替。$('.closeLink').click( function(e) {
e.preventDefault();
... do the close action...
});
解决这个问题最简单的方法是在#号后面添加另一个字符,就像这样:
<a href='#a' class="closeLink">close</a>
问题已解决。是的,它就是这么简单。有些人可能会讨厌这个答案,但他们不能否认它有效。
只要确保你没有将节分配给 "a",否则它将进入页面的该部分。(尽管我以前经常看到这种情况)默认情况下,“#”本身会跳转到页面顶部。
JavaScript版本:
myButton.onclick=function(e){
e.preventDefault();
// code
return false;
}
jQuery版本:
$('.myButtonClass').click(function(e){
e.preventDefault();
// code
return false;
});
href = "javascript:;"
而不是href = "#"
,这样就可以在不滚动的情况下运行onclick处理程序。<a href="javascript:;" onclick="doSomething()">Do Something</a>
$('.closeLink').click( function(event) {
event.preventDefault();
...do the close action...
});
return false
能够起作用,但并不是所有情况下的答案。
return false
会同时调用 event.preventDefault
和 event.stopPropagation
。stopPropagation
将阻止对象上附加的任何其他事件触发。这可能是你想要的,也可能不是。 - David Murdoch<a href="close.php" onclick="close(); return false">
<span onclick="close(); return false">关闭</span>
像ROFLwTIME的例子一样,一个简单的方法是在href中放两个##。虽然不常见,但对我有用。
<a href='##' >close</a>
我喜欢使用jQuery。它非常简单。
$('a').on('click',function(e){
if($(this).attr('href')=='#')
return e.preventDefault();
});
preventDefault()
来阻止默认行为;同时返回false也是有帮助的。mylink.onclick = function(e){
e.preventDefault();
// stuff
return false;
}
抱歉回复晚了,但是没有人提到这一点。
只需将其设置为<a>Do Stuff</a>
,不需要任何href
,并将样式cursor: pointer
添加到元素中。
然后您可以使用jquery来管理任何单击事件,如下所示
$(document).ready(function(){
$("#Element").click(function(){
alert("Hello");
//Do Stuff
})
});
#Element {
cursor: pointer;
}
#Element:hover {
color: #00f;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a id="Element">Do Stuff</a>
event.preventDefault
才是正确的方法。 - David Murdoch