我对JS很新 - 所以只是想知道你是否知道如何解决这个问题。
目前我的代码
<a href='#' class="closeLink">close</a>
运行一些JS来关闭一个盒子。我遇到的问题是当用户点击链接时 - 当发生这种情况时,href =“#”会将用户带到页面顶部。
如何解决这个问题,所以不这样做?即我不能使用某些像onclick =“return false”,因为我想这会阻止JS工作?
由于
答案 0 :(得分:57)
通常的做法是从你的javascript点击处理程序返回false。这将阻止事件冒泡并取消事件的正常操作。根据我的经验,这通常是您想要的行为。
jQuery示例:
$('.closeLink').click( function() {
...do the close action...
return false;
});
如果您只想阻止正常操作,只需使用preventDefault。
$('.closeLink').click( function(e) {
e.preventDefault();
... do the close action...
});
答案 1 :(得分:29)
解决此问题的最简单方法是在磅符号之后添加另一个字符,如下所示:
<a href='#a' class="closeLink">close</a>
问题解决了。是的,就这么简单。有些人可能会讨厌这个答案,但他们不能否认它有效。
请确保您实际上没有将某个部分分配给“a”,否则它将转到该部分页面。 (尽管如此,我不会经常看到这种情况)默认情况下,“#”会自动显示在页面顶部。
答案 2 :(得分:5)
JavaScript版本:
myButton.onclick=function(e){
e.preventDefault();
// code
return false;
}
jQuery版本:
$('.myButtonClass').click(function(e){
e.preventDefault();
// code
return false;
});
这只是做得好! :)
答案 3 :(得分:2)
return false就是答案,但我通常会这样做:
$('.closeLink').click( function(event) {
event.preventDefault();
...do the close action...
});
在运行代码之前停止发生操作。
答案 4 :(得分:1)
虽然它看起来很受欢迎,但href ='#'不是JavaScript的神奇关键字,它只是一个空锚的常规链接,因此它毫无意义。你基本上有两个选择:
为不知道JavaScript的用户代理实现替代方法,使用 href 参数指向它并取消使用JavaScript的链接。 E.g:
<a href="close.php" onclick="close(); return false">
当 noscript 备选方案不可用或不相关时,您根本不需要链接:
<span onclick="close(); return false">Close</span>
答案 5 :(得分:1)
您可以使用的一个选项是不使用href = "#"
,而是使用href = "javascript:;"
,这样您就可以在不滚动的情况下运行onclick处理程序。
例如
<a href="javascript:;" onclick="doSomething()">Do Something</a>
答案 6 :(得分:1)
使用href = "JavaScript:Void(0);"
答案 7 :(得分:1)
像ROFLwTIME示例一样,一种简单的方法是在href中放入两个##。这不常见,但对我有用。
rightProp
答案 8 :(得分:0)
如果您的代码通过了eventObject,您可以使用preventDefault()
;返回false也有帮助。
mylink.onclick = function(e){
e.preventDefault();
// stuff
return false;
}
答案 9 :(得分:0)
对于迟到的回答感到抱歉,但没有人提到这一点。
只需将<a>Do Stuff</a>
设为href
而不添加cursor: pointer
,并将样式$(document).ready(function(){
$("#Element").click(function(){
alert("Hello");
//Do Stuff
})
});
添加到元素中。
然后,您可以使用 jquery 管理任何点击事件,如下所示
#Element {
cursor: pointer;
}
#Element:hover {
color: #00f;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a id="Element">Do Stuff</a>
&#13;
<!DOCTYPE html>
<html>
<head>
<title>AngularJS Demos</title>
<script src="https://code.angularjs.org/1.3.9/angular.js"></script>
</head>
<body>
<script type="text/javascript">
var samplesModule = angular.module('demoApp', []);
samplesModule.controller('SimpleController', SimpleController);
function SimpleController($scope) {
$scope.names = ['Dave', 'Napur', 'Heedy', 'Shriva'];
}
</script>
<div class="container" data-ng-app="demoApp" data-ng-controller="SimpleController">
<h3>Adding a Simple Controller</h3>
<ul>
<li data-ng-repeat="name in names">{{name}}</li>
</ul>
</div>
</body>
</html>
&#13;
答案 10 :(得分:-2)
围绕链接换行div语句,让链接返回false,在点击时将javascript功能添加到div ...
<div onClick="javascript:close();">
<a href="#" onclick="javascript:return false;">Close</a>
</div>