chairuosen
V2EX  ›  问与答

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

  •  
  •   chairuosen · Nov 6, 2013 · 3975 views
    This topic created in 4588 days ago, the information mentioned may be changed or developed.
    面试官问我click等事件对于后添加的元素没有绑定,如何处理。
    考官给的正确答案是用live,而我想的是把这对象unbind再bind一遍。。。
    方法有点土但是它应该也工作。我之前也遇到过这种问题就用的自己这种方法做的。。。之前确实不知道live
    两种方法是不是都可以?
    性能方面呢?
    16 replies    2014-11-20 10:03:02 +08:00
    lichao
        1
    lichao  
       Nov 6, 2013   ❤️ 1
    显然你的答案不过关,即使它也能工作
    wenbinwu
        2
    wenbinwu  
       Nov 6, 2013
    live
    version deprecated: 1.7, removed: 1.9
    ijse
        3
    ijse  
       Nov 6, 2013
    live() 好像废弃了, 建议使用delegate()

    用live相比你所说方法,性能更高些。
    liuyao729
        4
    liuyao729  
       Nov 6, 2013
    1.9里面已经删除live了,改用on
    P233
        5
    P233  
       Nov 6, 2013
    正想问这个问题呢

    $().on('click', function() {} );
    P233
        6
    P233  
       Nov 6, 2013
    @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
       Nov 6, 2013
    @lichao
    @wenbinwu
    @ijse
    @liuyao729
    @P233
    感谢,涨姿势
    ksc010
        8
    ksc010  
       Nov 6, 2013   ❤️ 1
    这个貌似叫做 事件委托
    能很大提升效率
    zythum
        9
    zythum  
       Nov 6, 2013   ❤️ 1
    live 已经废弃了。 现在on可以用一切。
    catfan
        10
    catfan  
       Nov 6, 2013   ❤️ 1
    @P233

    $(document)
    .on('click', '#abc', function() {});
    .on('mouseover', '#cba', function() {})
    ;
    catfan
        11
    catfan  
       Nov 6, 2013   ❤️ 1
    @P233

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

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

    jquery历代的改变不多,稍微花点心思看下最新版的手册都有标注哪些已经过时的语法。
    chairuosen
        16
    chairuosen  
    OP
       Nov 20, 2014
    @konakona 楼主没有挂掉。。。楼主入职一年了。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1931 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 00:01 · PVG 08:01 · LAX 17:01 · JFK 20:01
    ♥ Do have faith in what you're doing.