防止标准的href / jquery点击组合将#附加到网址?

时间:2013-02-20 17:32:46

标签: javascript jquery hyperlink

我有一个标准的链接设置,点击时通过jquery触发事件

<a href="#" class="dosomething">Click Me</a> 

所有这一切都很有效,除了单击伪URL时,它会在URL上附加一个#标签。如果用户决定稍后刷新页面,此主题标签会影响我的页面重新加载的方式,因此我不希望在网址上附加主题标签。

这是可能的,同时仍允许我的普通jquery开火吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

您应该return false;代码

的事件处理程序A

或者,使用

<a href="javascript: void(0);" class="dosomething">Click Me</a> 

对于那些认为javascript: void(0)是不良做法的人

如果您使用href='#',则必须处理两件事

// one
function fn() {
    // code
    return false;
}

// two
<a href="#" onclick="return fn();">click</a>

如果你忘了并且只是写onclick="fn();"它就行不通了

我使用javascript: void(0);的另一个原因是,如果函数遇到/抛出错误,不会返回false

所以,如果你是一个单独的开发人员,那么你可以明确地做出自己的选择,但如果你作为一个团队工作,你必须要说明:

使用href =“#”,确保onclick总是包含return false;最后,任何被调用的函数都不会抛出错误,如果你动态地将一个函数附加到onclick属性,请确保它不会抛出错误而返回false。

OR

使用href="javascript:void(0)"

Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

答案 1 :(得分:1)

在点击功能结束时,使用:

return false;

答案 2 :(得分:0)

smartass anwser:使用按钮。

替代方案:您必须确保在jQuery事件处理程序

中触发preventDefault
$("dosomthing").click(function(e){
  //make magic happen
  e.preventDefault()
})

这适用于提交等等的html表单。

关于按钮事项的说明

最好只使用链接标记(更改网址的内容)和其他类型的交互按钮。

搜索机器人和其他网页抓取工具希望标签链接到其他html文档(超链接),最多包含html 4.或者链接到当前文档中的其他点。

答案 3 :(得分:-4)

它是否需要成为一个href?你可以这样做:

<span class="dosomething">Click me</span>

.dosomething{cursor:pointer}