jquery 调用live()方法无效?
【前言】
之前讲课的时候讲过jquery的live()方法,当时讲解的时候说的是→当前或者未来的元素,但是后来发现jQuery的live方法无效???
尝试着把jQuery代码库版本换到1.8及1.8之前才有效果,所以这里总结下
【主体】
(1)用live方法时,注意jquery的版本,根据官方文档,从1.7开始就不推荐live和delegate了,1.9里就去掉live了。
在jQuery官方网站上说明了原因,并声称用on方法取代live方法。 jQuery官方网站声称下面三行代码是等价的 $("a.offsite").live("click", function(){...}); // jQuery 1.3+ $(document).delegate("a.offsite", "click", function(){...}); // jQuery 1.4.3+ $(document).on("click", "a.offsite", function(){...}); // jQuery 1.7+
(2)原因解析:
在新版的jquery(>1.9版本即为新版)中,live()方法已经被删除了,所以我们在调用的时候会提示该函数不存在,js报错。 用live的时候要注意jquery的版本,根据官方文档,从1.7开始就不推荐live和delegate了,1.9里就去掉live了。
(3)原来的写法是on绑定元素点击事件:
如果直接替换为on()方法,那么新生成的元素再次点击事件的时候不会有任何效果,新的语法是:
$(document).on("click","table a",function(){...}) 或者(注意:该版本必须大于1.7) $(body).on("click","table a",function(){...}) 或者 $("table).on("click","a",function(){...})
这里涉及到一个问题,$("body")这里为什么是body,其实我们可以选择其他的距离#company_logo更近的节点,这样会有更好的性能,其实on()是在body中找#company_logo节点,所以我们吧body换成#company_logo的上级节点会取得更好的性能。
具体可以参考文章浅谈jQuery出现的新添加元素点击事件无效
.
相关推荐
84483065 2020-09-11
85477104 2020-08-15
83510998 2020-08-08
tztzyzyz 2020-07-05
delmarks 2020-06-28
89510194 2020-06-27
牵手白首 2020-06-14
EdwardSiCong 2020-11-23
85477104 2020-11-17
hhanbj 2020-11-17
81427005 2020-11-11
seoppt 2020-09-13
honeyth 2020-09-13
WRITEFORSHARE 2020-09-13
momode 2020-09-11
82550495 2020-08-03
tthappyer 2020-08-03
84901334 2020-07-28