标记之前或外部JavaScript文档中的函数来分配函数.
*注意:对于动态创建的元素,请使用:
$('.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:void(0);
或#
除非你的用户界面已经推断出JavaScript已经启用,在这种情况下你应该使用javascript:void(0);
.另外,不要使用span作为链接,因为从语义上来说这是错误的.
在您的应用程序中使用SEO友好的URL路由,例如/ Home/Action/Parameters也是一种很好的做法.如果您有一个指向不使用JavaScript的页面的链接,那么您可以在以后增强体验.使用指向工作页面的真实链接,然后添加onlick事件以增强演示.
这是一个例子.Home/ChangePicture是一个页面上的表单的工作链接,其中包含用户界面和标准HTML提交按钮,但它看起来更好,注入了带有jQueryUI按钮的模态对话框.无论哪种方式都可以,取决于浏览器,它满足移动优先开发.
很高兴让禁用JavaScript的用户可以访问您的站点,在这种情况下,href指向一个执行与正在执行的JavaScript相同的操作的页面.否则我使用带有" "的" # " return false;
来阻止默认操作(滚动到页面顶部),正如其他人提到的那样.
谷歌搜索" javascript:void(0)
"提供了有关此主题的大量信息.其中一些像这样提到不使用void(0)的原因.
链接现在(有效)已断开。
32> 小智..:
您还可以在锚中写一个提示,如下所示:
...
因此用户将知道此链接的作用.
我想说最好的方法是将一个href锚点转换为你永远不会使用的ID,比如#Do1Not2Use3This4Id5或类似的ID,你100%肯定没有人会使用它并且不会冒犯别人.
Javascript:void(0)
是一个坏主意,违反了启用CSP的HTTPS页面上的内容安全策略https://developer.mozilla.org/en/docs/Security/CSP(感谢@ jakub.g)
使用just #
会让用户在按下时跳回到顶部
如果未启用JavaScript,则不会破坏页面(除非您有JavaScript检测代码
如果启用了JavaScript,则可以禁用默认事件
你必须使用href,除非你知道如何阻止你的浏览器选择一些文本,(不知道使用4将删除阻止浏览器选择文本的东西)
基本上没有人在本文中提到5我认为很重要,因为如果你的网站突然开始选择链接周围的东西,你的网站就会变得不专业.
这里还有一件重要的事情需要记住.第508节合规.因此,我觉得有必要指出你需要屏幕阅读器(如JAWS)的锚标签才能通过标签对焦.因此解决方案"只使用JavaScript并忘记锚定开始"不是其中一些选项.只有当你无法让屏幕跳回到顶部时,才需要在href内部启动JavaScript.您可以将settimeout用于0秒并将JavaScript激发到您需要关注的位置,但即使是apage也会跳到顶部然后再返回.
我看到很多想要继续使用#
价值观的人的答案href
,因此,这是一个有希望满足两个阵营的答案:
A)我很高兴有javascript:void(0)
我的href
价值:
Link Text
B)我正在使用jQuery,并希望#
作为我的href
价值:
Link Text
请注意,如果您知道不会动态创建链接,请改用以下click
函数:
$('a[href="#"]').click(function(e) {
我使用href ="#"作为我想要虚拟行为的链接.然后我使用这段代码:
$(document).ready(function() { $("a[href='#']").click(function(event) { event.preventDefault(); }); });
这意味着如果href等于散列(*="#"),它会阻止默认链接行为,因此仍然允许您为其编写功能,并且它不会影响锚点击.
在现代网站上,如果元素仅执行JavaScript功能(不是真实链接),则应避免使用href.
为什么?此元素的存在告诉浏览器这是一个与目标的链接.这样,浏览器将显示"在新选项卡/窗口中打开"功能(当您使用shift +单击时也会触发).这样做会导致打开同一页面而不会触发所需的功能(导致用户受挫).
关于IE:从IE8开始,如果设置了doctype,则元素样式(包括悬停)可以工作.其他版本的IE不再需要担心了.
只有缺点:删除HREF会删除tabindex.为了解决这个问题,您可以使用一个样式为链接的按钮或使用JS添加tabindex属性.
不要忽视您的URL可能是必要的事实 - 在遵循引用之前触发onclick,因此有时您需要在导航离开页面之前处理客户端.
只是为了提到其他人提到的一点.
绑定事件'onload'a或$('document')要好得多.ready {}; 然后将JavaScript直接放入click事件中.
在JavaScript不可用的情况下,我会使用href到当前URL,也许是锚点到链接的位置.该页面仍可供没有JavaScript的人使用,他们不会注意到任何差异.
正如我要掌握的,这里有一些jQuery可能会有所帮助:
var [functionName] = function() { // do something }; jQuery("[link id or other selector]").bind("click", [functionName]);
我从你的话中理解的是,你想创建一个链接来运行JavaScript代码.
然后你应该考虑有人在他们的浏览器中阻止JavaScript.
因此,如果您真的要仅使用该链接来运行JavaScript函数,那么您应该动态添加它,这样如果用户没有在浏览器中启用它们并且您正在使用该链接,那么它甚至都不会被看到触发一个JavaScript函数,在浏览器中禁用JavaScript时使用类似的链接是没有意义的.
因此,当禁用JavaScript时,它们都不好.
如果启用了JavaScript,您只想使用该链接来调用JavaScript函数
Link
比使用更好的方式
Link
因为href ="#"将导致页面执行不需要的操作.
另外,另一个原因Link
是Link
JavaScript 比大多数浏览器的默认脚本语言更好.作为Internet Explorer的示例,使用onclick属性来定义将使用的脚本语言的类型.除非弹出另一种优秀的脚本语言,否则Internet Explorer也将使用JavaScript作为默认语言,但如果使用其他脚本语言javascript:
,则可以让Internet Explorer了解正在使用的脚本语言.
考虑到这一点,我更喜欢使用和锻炼
Link
足以使它成为习惯并且更加用户友好,请在JavaScript代码中添加这种链接:
$(document).ready(function(){ $(".blabla").append('Link') });
您可以使用href并删除所有只有哈希的链接:
HTML:
foo
JS:
$(document).ready(function(){ // on DOM ready or some other event $('a[href=#]').attr('href',''); // set all reference handles to blank strings // for anchors that have only hashes });
这很糟糕,特别是在IE中(最高版本10,不确定11).单击具有空href的链接会导致不必要(可能不需要)的请求被触发,并且在IE中,它会尝试打开Windows资源管理器.
42> 小智..:
为什么不用这个呢?这不会向上滚动页面.
Run JavaScript Code
理想情况下,您应该有一个真正的URL作为非JavaScript用户的后备.
如果这没有意义,请使用#
作为href
属性.我不喜欢使用该onclick
属性,因为它直接在JavaScript中嵌入JavaScript.更好的想法是使用外部JS文件,然后将事件处理程序添加到该链接.然后,您可以阻止默认事件,以便#
在用户单击它之后不会更改URL以附加该URL .
myLink
我个人稍后会使用JavaScript附加一个事件处理程序(使用attachEvent
或者addEventListener
或者也可以<把你最喜欢的JavaScript框架放在这里>).
有人可以解释为什么这个答案有这么多的downvotes吗?
45> 小智..:
完全符合整体情绪,void(0)
在需要时使用,并在需要时使用有效的URL.
使用URL重写,您可以创建不仅可以执行禁用JavaScript操作的URL,而且还可以告诉您它将要执行的操作.
WhyClickHere
在服务器端,您只需要解析URL和查询字符串并执行您想要的操作.如果您很聪明,则可以允许服务器端脚本以不同方式响应Ajax和标准请求.允许您使用简洁的集中代码来处理页面上的所有链接.
URL重写教程
优点
显示在状态栏中
通过JavaScript中的onclick处理程序轻松升级到Ajax
实际上评论自己
使用一次性HTML文件防止您的目录乱七八糟
缺点
仍应在JavaScript中使用event.preventDefault()
服务器端的相当复杂的路径处理和URL解析.
我相信那里有更多的缺点.随意讨论它们.
如果您使用的链接,以此来只执行一些JavaScript代码(而不是使用像D4V360跨度极大的建议),只是做:
test
如果您使用带onclick的链接进行导航,请不要在JavaScript关闭时使用href ="#"作为后备.当用户点击链接时,通常会非常烦人.相反,如果可能,提供onclick处理程序将提供的相同链接.如果您不能这样做,请跳过onclick并在href中使用JavaScript URI.
我非常希望尽可能地将我的JavaScript保留在HTML标记之外.如果我使用点击事件处理程序,那么我建议使用
Click me!
.
$('.trigger').click(function (e) { e.preventDefault(); // Do stuff... });
值得注意的是,许多开发人员都认为使用锚点标记来实现点击事件处理程序并不好.他们更喜欢你使用 您不应该 像这样设置绑定: 然后你有一个干净的HTML文件很容易加载(和seo友好)没有数千或
cursor: pointer;
.这是一个很多争论的问题.
48> G. Ghez..:onclick="something();"
在HTML中使用内联,以免使用无意义的代码来污染它; 必须在Javascript文件(*.js)中设置所有单击绑定.$('#myAnchor').click(function(){... **return false**;});
或 $('#myAnchor').bind('click', function(){... **return false**;});
href="javascript:void(0);"
和只是href="#"