.live() vs .bind()

bind, jquery, live

Solution

The main difference is that `live` will work also for the elements that will be created after the page has been loaded (i.e. by your javascript code), while `bind` will only bind event handlers for currently existing items.

// BIND example
$('div').bind('mouseover', doSomething);
// this new div WILL NOT HAVE mouseover event handler registered
$('<div/>').appendTo('div:last');

// LIVE example
$('div').live('mouseover', doSomething);
// this new appended div WILL HAVE mouseover event handler registered
$('<div/>').appendTo('div:last');

Update:

jQuery 1.7 deprecated `live()` method and 1.9 has removed it. If you want to achieve the same functionality with 1.9+ you need to use a new method `on()` which has slightly different syntax as it's invoked on document object and the selector is passed as a parameter. Therefor the code from above converted to this new way of binding events will look like this:

// ON example
$(document).on('mouseover', 'div', doSomething);
// this new appended div WILL HAVE mouseover event handler registered
$('<div/>').appendTo('div:last');

Problem

I want to know the main difference between `.live()` vs. `.bind()` methods in jQuery.

Original source

Related problems