views:

1146

answers:

4

I love the new live event in jQuery 1.3. The question I have is the performance of this event. I know the advantages of using live over click/bind('click') but is there a performance hit for using it over click/bind('click')?

If not, why would you ever use click or bind('click')?

+2  A: 

See this.

As for why you would ever use click or bind instead of live, the answer is because you don't need the extra functionality.

code_burgar
+5  A: 

If not, why would you ever use click or bind('click')?

Because $.live() has some significant disadvantages

  • Live events do not bubble in the traditional manner and cannot be stopped using stopPropagation or stopImmediatePropagation. For example, take the case of two click events - one bound to "li" and another "li a". Should a click occur on the inner anchor BOTH events will be triggered. This is because when a $("li").bind("click", fn); is bound you're actually saying "Whenever a click event occurs on an LI element - or inside an LI element - trigger this click event." To stop further processing for a live event, fn must return false.
  • Live events currently only work when used against a selector. For example, this would work: $("li a").live(...) but this would not: $("a", someElement).live(...) and neither would this: $("a").parent().live(...).
Peter Bailey
Also certain events cannot be captured by .live()
MacAnthony
A: 

Just a notice: there is a firebug extension which shows all attached events on a page: http://robertnyman.com/inline-code-finder/

powtac
A: 

You should read this very good answer in this similar thread:

Is binding events in jQuery very expensive, or very inexpensive?

Andreas Klinger