因此,我知道从链接执行javascript代码有4种主要方法。根据我的要求,我需要在不移动屏幕的情况下这样做(链接到#并且不返回false是坏的)。如果可能,执行的javascript代码的SEO也很重要。那么这样做的正确方法是什么?
方法1(需要确保myCode()始终返回false):
<a href="#" onclick="return myCode();">execute</a>
方法2(似乎最有意义?):
<a href="javascript:myCode();">execute</a>
方法3:
<a href="javascript:void(0);" onclick="myCode();">execute</a>
方法4(不像我想的那样在语义上令人愉快):
<span id="executeMyCodeLink" class="link">execute</a>
<script>
$('#executeMyCodeLink').click(myCode);
</script>
使用方法4,当然也可以使用onclick ..
答案 0 :(得分:5)
使页面不跳转并使用带有href和方法4的“a”标记使用preventDefault。
<a id="executeMyCodeLink" href="#">execute</a>
<script>
$('#executeMyCodeLink').click(function(event) {
event.preventDefault();
myCode();
});
</script>
包含一个href很重要,因为链接不能正确设置样式,否则你的html不会验证。
答案 1 :(得分:4)
我更喜欢方法4,但有两点不同:
答案 2 :(得分:2)
<a href="#_">
也有效,这样您就不需要return false
。 (任何不存在的锚都会起作用。)
此外,方法4仅在您使用jQuery时才有效。我的大多数网站只有一个或两个小的javascript效果,我不是为此加载jQuery。
答案 3 :(得分:0)
使用jquery是处理javascript调用的一种不引人注目的方式。所以我会说方法4.你也可以这样做:
$(a#linkId).click(...);
答案 4 :(得分:0)
我也更喜欢方法4。
将事件分别绑定到dom对象是一种更优雅的方式,我认为这是一种很好的编程习惯。
答案 5 :(得分:0)
我也喜欢方法4。只要有可能,我会尝试不将任何内容直接放在偶数属性中或直接将js写入href。我这样做是因为在大多数情况下,ill实际上将非js url作为href,因此对于非js启用的浏览器会降低。第二个共鸣是我不喜欢用瑕疵污染元素: - )