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

2013-11-06 19:21:50 +08:00
 chairuosen
面试官问我click等事件对于后添加的元素没有绑定,如何处理。
考官给的正确答案是用live,而我想的是把这对象unbind再bind一遍。。。
方法有点土但是它应该也工作。我之前也遇到过这种问题就用的自己这种方法做的。。。之前确实不知道live
两种方法是不是都可以?
性能方面呢?
3367 次点击
所在节点    问与答
16 条回复
lichao
2013-11-06 19:26:07 +08:00
显然你的答案不过关,即使它也能工作
wenbinwu
2013-11-06 19:28:14 +08:00
live
version deprecated: 1.7, removed: 1.9
ijse
2013-11-06 19:28:34 +08:00
live() 好像废弃了, 建议使用delegate()

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

$().on('click', function() {} );
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
2013-11-06 19:47:34 +08:00
@lichao
@wenbinwu
@ijse
@liuyao729
@P233
感谢,涨姿势
ksc010
2013-11-06 21:52:38 +08:00
这个貌似叫做 事件委托
能很大提升效率
zythum
2013-11-06 21:54:51 +08:00
live 已经废弃了。 现在on可以用一切。
catfan
2013-11-06 23:18:09 +08:00
@P233

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

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

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

jquery历代的改变不多,稍微花点心思看下最新版的手册都有标注哪些已经过时的语法。
chairuosen
2014-11-20 10:03:02 +08:00
@konakona 楼主没有挂掉。。。楼主入职一年了。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/88304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX