深入理解jQuery中live与bind方法的区别
注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用
live的缺点就是,运行完以后不释放空间,太多的使用会占用更多的内存,bind()则点击完以后释放空间
区别一:
click here
可以给这个元素绑定一个简单的click事件:
$('.clickme').bind('click', function() {
$('body').append('
another target
');
});
当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。
尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。
.live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:
$('.clickme').live('click', function() {
alert("live handler called.");
});
然后再添加一个新元素:
$('body').append('
another target
');
然后再点击新增的元素,他依然能够触发事件处理函数。
区别二:
(1)bind方法可以绑定任何javascript的事件,而live方法在jquery1.3的时候只支持click, dblclick, keydown, keypress,keyup,mousedown, mousemove, mouut, mouseover, 和 mouseup.在jquery 1.4.1中,甚至也支持 focus 和 blue事件了(映射到更合适,并且可以冒泡的focusin和focusout上)。另外,在jquery 1.4.1中,也能支持hover(映射到"mouseenter mouseleave")。
(2)live() 并不完全支持通过dom遍历的方法找到的元素。取而代之的是,应当总是在一个选择器后面直接使用 .live()方法。
(3)当一个元素采用live方法进行事件的绑定的时候,如果想阻止事件的传递或冒泡,就要在函数中return false,仅仅调用stoppropagation()是无法实现阻止事件的传递或者冒泡的。
推荐阅读
-
深入理解jQuery中live与bind方法的区别
-
jquery中的查找parents与closest方法之间的区别
-
jQuery中.live()方法的用法深入解析
-
jQuery中bind,live,delegate与one方法的用法及区别解析
-
jQuery中的on与bind绑定事件区别实例详解
-
JQuery中click(),bind(),live(),delegate()的区别
-
jQuery中bind与live的用法及区别小结
-
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
-
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
-
jq中bind方法与on方法的区别实例分析