jQuery Parents vs Closest (v10)

Revision 10 of this benchmark created on


Description

Similar to parent vs closest, only this time testing when searching >1 level of the DOM ancestors.

Preparation HTML

<div>
  <table 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>
                  <li>
                    1
                  </li>
                  <li>
                    2
                  </li>
                  <li>
                    3
                  </li>
                  <li id="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 src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>

Setup

function getParents(elem, num) {    
        while(num--) {          
                elem = elem.parent();
        }
        return elem;
    }
    function getParentsJS(elem, num) {  
        while(num--) {          
                elem = elem.parentNode;
        }
        return elem;
    }

Test runner

Ready to run.

Testing in
TestOps/sec
Parents
$("#start").parents("table.end")
ready
Closest
$("#start").closest("table.end");
ready
Parent Parent
$("#start").parent().parent().parent().parent().parent().parent().parent().parent().parent();
ready
Parent Parent Function
getParents($("#start"), 9);
ready
Pure Javascript
document.getElementById('start').parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
ready
Javascript selector vs jQuery selector
$("#start")[0].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
ready
Javascript more beautiful
getParentsJS(document.getElementById('start'), 9);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.