以下是构建链接的两种方法,该链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好。?
函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>
or
函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>
以下是构建链接的两种方法,该链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好。?
函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>
or
函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>
当前回答
我强烈希望尽可能将JavaScript排除在HTML标记之外。如果我使用<a>作为单击事件处理程序,那么我建议使用<a class=“trigger”href=“#”>单击我</a> 。
$('.trigger').click(function (e) {
e.preventDefault();
// Do stuff...
});
需要注意的是,许多开发人员认为,使用锚标记来处理点击事件是不好的。他们希望您使用带有一些CSS的<span>或<div>来添加游标:指针;这是一个争论不休的问题。
其他回答
只使用#会做出一些有趣的动作,所以如果你想节省JavaScript bla、bla、的输入工作量,我建议使用#self,。
如果您恰好使用AngularJS,可以使用以下选项:
<a href="">Do some fancy JavaScript</a>
这不会有任何作用。
此外
它不会像(#)那样将您带到页面顶部因此,您不需要使用JavaScript显式返回false它简短而简洁
我个人将它们结合使用。例如:
HTML
<a href="#">Link</a>
使用一点jQuery
$('a[href="#"]').attr('href','javascript:void(0);');
or
$('a[href="#"]').click(function(e) {
e.preventDefault();
});
但我使用它只是为了防止用户单击空锚点时页面跳到顶部。我很少在HTML中直接使用onClick和其他on事件。
我的建议是将<span>元素与class属性一起使用,而不是锚。例如:
<span class="link">Link</span>
然后将函数分配给.link,其中包含一个封装在body中的脚本,该脚本位于</body>标记之前或外部JavaScript文档中。
<script>
(function($) {
$('.link').click(function() {
// do something
});
})(jQuery);
</script>
*注意:对于动态创建的元素,请使用:
$('.link').on('click', function() {
// do something
});
对于使用动态创建元素创建的动态创建元素,请使用:
$(document).on('click','.link', function() {
// do something
});
然后,您可以将span元素设置为看起来像带有一点CSS的锚点:
.link {
color: #0000ee;
text-decoration: underline;
cursor: pointer;
}
.link:active {
color: red;
}
下面是上面提到的jsFiddle示例。
不要将链接仅用于运行JavaScript。
使用href=“#”将页面滚动到顶部;使用void(0)会在浏览器中产生导航问题。
而是使用链接以外的元素:
<span onclick="myJsFunc()" class="funcActuator">myJsFunc</span>
并使用CSS设置样式:
.funcActuator {
cursor: default;
}
.funcActuator:hover {
color: #900;
}
您不应该在HTML中使用inline onclick=“something();”,以避免用无意义的代码污染它;所有单击绑定都必须在Javascript文件(*.js)中设置。
像这样设置绑定:$(“#myAnchor”).click(function(){…**return false**;});或$('#myAnchor').bind('click',function(){…**return false**;});
然后,您就可以轻松加载一个干净的HTML文件(并且seo友好),而无需数千href=“javascript:void(0);”,只需href=“#”