jQuery的live()与click()区别是什么?

最近发现挺多代码是用live()绑定事件,而且经常没有在外部包裹ready()

$('#id').live('click', function() {
    console.log('hello');
});

而通常情况下,我们绑定事件方法都是用:

$(document).ready(function() {
    $('#id').click(function() {
        console.log('hello');
    });
});

他们之间有什么区别吗?为什么要这样写?

阅读 22.6k
7 个回答
  1. live 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)
  2. click方法附加的事件处理程序适用于匹配选择器的当前元素
http://jsrun.net/tkKKp

click是绑在#id上;

live是一个事件委托,绑在document上,判断触发事件的元素是否为#id。

新手上路,请多包涵

$(...).click(function(){})在执行时,有哪些符合前面选择器的,则那些元素的click事件被设置,之后由js动态添加的dom元素,虽然也符合选择器,但他的click没有被设置。如果希望js动态添加的元素也可以自动添加click,则可以使用$(...).live("click",function(){})

live是动态的,先有事件,再匹配元素,最后调用处理函数。live可以当作一个公共的事件,比如列表项的操作,使用live比给每个列表项都绑定事件的效率要高。
click方法就是直接给元素绑定事件。
各有用途,看情况使用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题