Skip to main content

Bug Tracker

Side navigation

#5076 closed enhancement (invalid)

Opened August 19, 2009 06:04PM UTC

Closed December 03, 2010 07:53AM UTC

Last modified March 15, 2012 11:36AM UTC

Improving jQuery.filter performances for simple selectors would benefit .is(), .hasClass(), .closest() and .live()

Reported by: lrbabe Owned by: lrbabe
Priority: major Milestone: 1.4
Component: selector Version: 1.3.2
Keywords: filter, performance Cc:
Blocked by: Blocking:
Description

Currently .is() and .hasClass() underlying algorithm has an O(n) complexity while .closest() and .live() complexity is O(n²).

However, for simple selectors of the form "div", ".class" or "div.class" the complexity could respectively be O and O(n) by directly checking the nodes without querying the DOM.

The attached patch adds a dozen lines of code to jQuery.filter() to enable this behavior and has a very limited impact on performance for other selectors.

See related post on google groups for additional details and performance numbers: http://groups.google.com/group/jquery-dev/browse_thread/thread/99dc2e890e423bd7

Attachments (1)
  • patch.txt (1.7 KB) - added by lrbabe August 21, 2009 12:51AM UTC.

    Fix a bug in the previous proposed patch

Change History (2)

Changed November 19, 2010 01:10AM UTC by dmethvin comment:1

owner: johnlrbabe
status: newpending

Sorry about the long delay here. Could you re-review the proposed patch to see if it still applies?

Changed December 03, 2010 07:53AM UTC by trac-o-bot comment:2

resolution: → invalid
status: pendingclosed

Because we get so many tickets, we often need to return them to the initial reporter for more information. If that person does not reply within 14 days, the ticket will automatically be closed, and that has happened in this case. If you still are interested in pursuing this issue, feel free to add a comment with the requested information and we will be happy to reopen the ticket if it is still valid. Thanks!