V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sd4399340
V2EX  ›  问与答

前端们,大家是习惯href="#"还是href="javascript:void();"

  •  
  •   sd4399340 · 2012-03-29 14:32:10 +08:00 · 6008 次点击
    这是一个创建于 4648 天前的主题,其中的信息可能已经有所发展或是发生改变。
    平常用JQuery给a绑定click事件,为了让鼠标hover上去显示手形,必须要指定href属性~

    以前都是用href="javascript:void();",觉得写起来字太多,后来用href="#",但是一点就会回到上面去,也有点闹心,大家一般什么习惯?还是直接在click时间里返回false啊?
    49 条回复    2015-11-26 10:18:15 +08:00
    sonicwu
        1
    sonicwu  
       2012-03-29 14:40:13 +08:00
    href="javascript:;"
    master
        2
    master  
       2012-03-29 14:45:05 +08:00
    关于那个javascript:void();引发的血案神马的→_→
    dongsheng
        3
    dongsheng  
       2012-03-29 14:45:08 +08:00
    用href="###"就不会跳
    kaifazhe
        5
    kaifazhe  
       2012-03-29 15:11:06 +08:00
    href="javascript:"
    j1anb1n
        6
    j1anb1n  
       2012-03-29 15:19:29 +08:00
    href="javascript:false;"
    darasion
        7
    darasion  
       2012-03-29 15:22:37 +08:00
    习惯用#号,不过我觉得在后边加个有意义的名字更好。
    例如这样:

    href="#有意义的名字"
    herolee
        8
    herolee  
       2012-03-29 15:29:48 +08:00
    javascript:;
    loo2k
        9
    loo2k  
       2012-03-29 15:32:38 +08:00
    javascript:void(0)
    justfindu
        10
    justfindu  
       2012-03-29 15:37:53 +08:00
    void(0) 貌似有一个什么小功能来着0 0
    hellosun
        11
    hellosun  
       2012-03-29 15:38:31 +08:00
    href="###"
    underone
        12
    underone  
       2012-03-29 15:43:03 +08:00
    ###
    dongbeta
        13
    dongbeta  
       2012-03-29 15:44:44 +08:00
    教你一招:

    <a href="#this">这个点击不会移动页面哦</a>
    dongk
        14
    dongk  
       2012-03-29 15:50:05 +08:00
    @master 求详情。。。
    lossdante
        15
    lossdante  
       2012-03-29 16:09:56 +08:00
    为了hover显示手形指针么,那直接cursor:pointer;不就好了
    deepure
        16
    deepure  
       2012-03-29 16:12:12 +08:00
    楼上+1
    airyland
        17
    airyland  
       2012-03-29 16:15:57 +08:00
    1.cursor:pointer指定指针形状为手形。
    2.既然是绑定了事件,那e.preventDefault();就不会跳到页面上部了。
    3.从Graceful Degradation的角度来说,href应该写个可用地址。
    ong
        18
    ong  
       2012-03-29 16:28:16 +08:00
    #;
    hilyjiang
        19
    hilyjiang  
       2012-03-29 16:29:38 +08:00
    不喜欢在HTML里参杂JS代码,用#
    zxwind
        20
    zxwind  
       2012-03-29 16:35:39 +08:00
    既然只是要绑定onclick并显示手形,用button+cursor:pointer就可以了吧
    EchoFUN
        21
    EchoFUN  
       2012-03-29 16:46:40 +08:00
    @dongbeta really?所有的浏览器都兼容么?
    qiuai
        22
    qiuai  
       2012-03-29 17:22:41 +08:00
    #
    hdlifes
        23
    hdlifes  
       2012-03-29 17:35:31 +08:00
    LZ的头像和推上是一样的吗?
    javascript:; 常用
    aligo
        24
    aligo  
       2012-03-29 17:36:16 +08:00
    我都是直接href到目标页面,然后需要异步在绑定click,可以做到兼容例如不支持js的设备(虽然现在已经很少了)和爬虫识别
    sd4399340
        25
    sd4399340  
    OP
       2012-03-29 17:46:37 +08:00
    @hdlifes 一样啊,咱们不是互相关注的嘛
    dongbeta
        26
    dongbeta  
       2012-03-29 17:48:59 +08:00
    @EchoFUN 兼容性未知,我在safari下正常
    lepture
        27
    lepture  
       2012-03-29 17:51:18 +08:00
    # ,然后 e.preventDefault ,也就是jQuery里的 return false

    链接不会改,也不会跳。
    sd4399340
        28
    sd4399340  
    OP
       2012-03-29 17:54:27 +08:00
    @lepture 其实这种蛮好的,也是有点麻烦~
    sd4399340
        29
    sd4399340  
    OP
       2012-03-29 17:55:27 +08:00
    @dongsheng @hellosun @underone 这个真心不错~试试~
    sd4399340
        30
    sd4399340  
    OP
       2012-03-29 17:55:40 +08:00
    @master 求科普~
    ygmpkk
        31
    ygmpkk  
       2012-03-29 19:08:50 +08:00
    习惯用javascript:void();

    花括号喜欢{

    而不习惯
    {

    习惯问题吧
    shuang3281
        32
    shuang3281  
       2012-03-29 23:10:56 +08:00
    javascript:;
    +1
    Mose
        33
    Mose  
       2012-03-29 23:26:46 +08:00
    javascript:void();是什么作用?
    arzusyume
        34
    arzusyume  
       2012-03-30 09:09:06 +08:00
    javascript:;
    算是洁癖吧,看到url后面的#很不爽
    hzlzh
        35
    hzlzh  
       2012-03-30 10:07:17 +08:00
    用#,考虑到别人看的可读性,即便一些不懂的代码的人,也知道这里可以替换成链接。
    ohsc
        36
    ohsc  
       2012-03-30 10:13:24 +08:00
    两个都不好,最佳体验是,href提供跳转同时js劫持跳转。

    我一般会用jquery的delegate指定凡是带上.nojump的链接都禁止跳转。

    这样好处是,当js还没加载时,用户可以使用降级版本。js加载后可以使用高级版本。
    lhj2100
        37
    lhj2100  
       2012-03-30 10:16:56 +08:00
    #;页面不会跳动..
    smallcolor
        38
    smallcolor  
       2012-03-30 10:17:18 +08:00
    #nogo
    NemoAlex
        39
    NemoAlex  
       2012-03-30 10:20:45 +08:00
    如果有链接就href里写链接,JavaScript 在 Click 事件末尾 return false
    如果不是一个真正的链接,那么就不要加 href 属性,样式由 CSS 控制
    href="#" 这种做法会在 uri 里加上没有意义的 # 号
    href="#this" 是胡扯,# + 任意一个不存在的标签页面就不会跳转了,可是这种东西没有意义,并且丑陋
    FrankFang128
        40
    FrankFang128  
       2012-03-30 10:53:32 +08:00
    @master 什么血案?求link
    mew
        41
    mew  
       2012-03-30 11:20:32 +08:00
    好深奥。
    ohsc
        42
    ohsc  
       2012-03-30 13:34:13 +08:00
    其实都能实现你所要的问题。
    所以你要考虑的是语义、维护成本和极端情况下的体验。根据具体需求再决定选哪个。
    xwsoul
        43
    xwsoul  
       2012-03-30 14:26:01 +08:00
    ### 表示没有压力..但是我不喜欢url里出现 ### Orz 所以我比较喜欢javascript:void(0);
    westup
        44
    westup  
       2012-03-30 14:52:51 +08:00
    我用#,然后 e.preventDefault();
    frittle
        45
    frittle  
       2012-03-30 15:05:06 +08:00
    javascript:void(0); 忘了哪个浏览器void()括弧里面没0的话会报错。
    trista099
        46
    trista099  
       2012-03-30 16:17:16 +08:00
    爱油,亲,看着有点眼熟啊
    sd4399340
        47
    sd4399340  
    OP
       2012-03-31 16:25:03 +08:00
    @trista099 哥早就关注你了亲~
    sox
        48
    sox  
       2015-11-26 10:17:44 +08:00
    #; #$ #^ $* #.
    sox
        49
    sox  
       2015-11-26 10:18:15 +08:00
    #+无意义字符。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1732 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:37 · PVG 00:37 · LAX 08:37 · JFK 11:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.