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

今天面试时候被问到一个问题,关于JQUERY的live函数

  •  
  •   chairuosen · 2013-11-06 19:21:50 +08:00 · 3359 次点击
    这是一个创建于 4026 天前的主题,其中的信息可能已经有所发展或是发生改变。
    面试官问我click等事件对于后添加的元素没有绑定,如何处理。
    考官给的正确答案是用live,而我想的是把这对象unbind再bind一遍。。。
    方法有点土但是它应该也工作。我之前也遇到过这种问题就用的自己这种方法做的。。。之前确实不知道live
    两种方法是不是都可以?
    性能方面呢?
    16 条回复    2014-11-20 10:03:02 +08:00
    lichao
        1
    lichao  
       2013-11-06 19:26:07 +08:00   ❤️ 1
    显然你的答案不过关,即使它也能工作
    wenbinwu
        2
    wenbinwu  
       2013-11-06 19:28:14 +08:00
    live
    version deprecated: 1.7, removed: 1.9
    ijse
        3
    ijse  
       2013-11-06 19:28:34 +08:00
    live() 好像废弃了, 建议使用delegate()

    用live相比你所说方法,性能更高些。
    liuyao729
        4
    liuyao729  
       2013-11-06 19:32:41 +08:00
    1.9里面已经删除live了,改用on
    P233
        5
    P233  
       2013-11-06 19:35:47 +08:00
    正想问这个问题呢

    $().on('click', function() {} );
    P233
        6
    P233  
       2013-11-06 19:39:09 +08:00
    @P233 没编辑完不小心发出去了
    $().on('click', function() {} );
    $().on('mouseover', function() {} );

    可以简写成
    $().on({
    'click': function(),
    'mouseover': function ()
    });

    那么

    $(document).on('click', '#abc', function() {});
    $(document).on('mouseover', '#cba', function() {});

    可以写在一起吗?
    chairuosen
        7
    chairuosen  
    OP
       2013-11-06 19:47:34 +08:00
    @lichao
    @wenbinwu
    @ijse
    @liuyao729
    @P233
    感谢,涨姿势
    ksc010
        8
    ksc010  
       2013-11-06 21:52:38 +08:00   ❤️ 1
    这个貌似叫做 事件委托
    能很大提升效率
    zythum
        9
    zythum  
       2013-11-06 21:54:51 +08:00   ❤️ 1
    live 已经废弃了。 现在on可以用一切。
    catfan
        10
    catfan  
       2013-11-06 23:18:09 +08:00   ❤️ 1
    @P233

    $(document)
    .on('click', '#abc', function() {});
    .on('mouseover', '#cba', function() {})
    ;
    catfan
        11
    catfan  
       2013-11-06 23:19:15 +08:00   ❤️ 1
    @P233

    晕,这里居然不支持tab..

    $(document)
    .on('click', '#abc', function() {})
    .on('mouseover', '#cba', function() {})
    ;
    P233
        12
    P233  
       2013-11-06 23:26:57 +08:00
    @catfan 学到了,感谢
    wyx
        13
    wyx  
       2013-11-07 12:28:37 +08:00
    哈哈,不知道live能不能搞定事件循环绑定(或者叫多次绑定)造成的问题。
    yimity
        14
    yimity  
       2013-11-08 23:10:23 +08:00   ❤️ 1
    live 早都已经废弃了。delegate 也不建议用了,现在是 on 统一天下。
    konakona
        15
    konakona  
       2014-11-19 03:31:51 +08:00
    感觉楼主挂掉是因为:
    不管你是如何解决问题的,而是你有没有掌握基础的问题。
    在你不能掌握好基础的前提下,无论你如何凑巧而出色的解决了问题,始终是不稳定的,仍然需要补充基础。

    jquery历代的改变不多,稍微花点心思看下最新版的手册都有标注哪些已经过时的语法。
    chairuosen
        16
    chairuosen  
    OP
       2014-11-20 10:03:02 +08:00
    @konakona 楼主没有挂掉。。。楼主入职一年了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5481 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:26 · PVG 09:26 · LAX 17:26 · JFK 20:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.