jQuery Parents vs Closest vs :first

JavaScript performance comparison

Revision 42 of this test case created

Preparation code

<script src="//code.jquery.com/jquery-git2.js"></script>

<div>
  <table id="end" class="end">
    <tr>
      <td>
        <ul>
          <li>
            1
          </li>
          <li>
            2
          </li>
          <li>
            3
          </li>
          <li>
            4
          </li>
          <li>
            5
          </li>
          <li>
            6
            <ul>
              <li>
                1
              </li>
              <li>
                2
              </li>
              <li>
                2
              </li>
              <li>
                3
                <ul class="should-be" id="should-be">
                  <li>
                    1
                  </li>
                  <li>
                    2
                  </li>
                  <li>
                    3
                  </li>
                  <li id="start" class="start">
                    4
                  </li>
                  <li>
                    5
                  </li>
                </ul>
              </li>
              <li>
                4
              </li>
              <li>
                5
              </li>
            </ul>
          </li>
          <li>
            7
          </li>
          <li>
            8
          </li>
          <li>
            9
          </li>
          <li>
            10
          </li>
        </ul>
      </td>
    </tr>
  </table>
</div>
<script>
Benchmark.prototype.setup = function() {
    var start = $('#start'), shouldBe = $('#should-be'), found;
};

Benchmark.prototype.teardown = function() {
    if(window.console) console.log('found===shouldBe:',found[0]===shouldBe[0]);
};
</script>

Preparation code output

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
    • 1
    • 2
    • 2
    • 3
      • 1
      • 2
      • 3
      • 4
      • 5
    • 4
    • 5
  • 7
  • 8
  • 9
  • 10

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
parents('.should-be')
found=start.parents('.should-be')
pending…
parents('#should-be')
found=start.parents('#should-be')
pending…
parents('.should-be:first')
found=start.parents('.should-be:first')
pending…
parents('.should-be').first()
found=start.parents('.should-be').first()
pending…
parents('ul').first()
found=start.parents('ul').first()
pending…
closest('ul')
found=start.closest('ul')
pending…
closest('.should-be')
found=start.closest('.should-be')
pending…
parents('ul:first')
found=start.parents('ul:first')
pending…
closest('#should-be')
found=start.closest('#should-be')
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment