html的a标签后续绑定js事件,href属性设置为#还是javascript:;或者javascript:void(0);好?

一直有这个问题,在网上找答案都没有个统一、清晰的思路,今天在看bootstrap文档时又遇到了(详见:“如果你选择使用连接标签的话,在iOS设备上需要一个href="#"配合点击事件”),所以想在sf里问问看有没有熟悉这方面知识的人给解答一下,谢谢!
另外:bootstrap关于“iOS设备上需要一个href="#"”里的href="#"是不是等价于href="javascript:;"
相关问题已在站内搜索,列出如下:
http://segmentfault.com/q/1010000000355766
http://segmentfault.com/q/1010000000339082

不需要很长的回答,仅一两句或者一个list能给出一个理解思路就可以了,再次谢谢!

阅读 18.6k
评论
    6 个回答
    • 3.2k

    不懂bootstrap……
    从“关闭图标用来关闭模态对话框或警告框”的概念来看,都是用js阻止默认事件并绑定关闭事件,应该都是效果一致的,仅仅用来保证a标签的css效果而已。区别是代码长度不同而已。


    update:补充一下上面保证css效果的说法。

    IE6(QS)IE7(QS)IE8(Q)下,如果a标签没有href属性,则css引擎会拒绝承认它是一个链接,具体地说,a:hover的设定无效。这是一个让人比较难受的bug。
    注:这里Q代表Quirks Modes 即混杂模式, S 代表 Standards Modes 即标准模式。参考浏览器兼容性问题综述——正确的认识浏览器兼容性问题

    这是为啥a必须增加href属性的原因。

    至于href属性中写的是啥完全不重要,@怡红公子 很厚道地发出了源码,可以看到里面明确写明了(对于a标签)阻止默认事件。使用href="#"只是一种惯例,具体在题主给出的链接中已经有很好的论述了。

      相似问题
      推荐文章