链接执行javascript代码的正确方法

时间:2010-09-08 14:14:03

标签: javascript jquery html onclick anchor

因此,我知道从链接执行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 ..

6 个答案:

答案 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,但有两点不同:

  • 将脚本移动到单独的文件中。不引人注目的JavaScript是快乐的JavaScript。
  • 使用a标签,链接到#并返回false。

答案 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启用的浏览器会降低。第二个共鸣是我不喜欢用瑕疵污染元素: - )