While Through DOM (v4)

Revision 4 of this benchmark created by Eddie on


Preparation HTML

<div id="end" class="ui-btn">
  <div class="ui-btn ui-disabled">
    <div class="ui-btn ui-disabled">
      <div class="ui-btn ui-disabled">
        <div class="ui-btn ui-disabled">
          <div class="ui-btn ui-disabled">
            <div class="ui-btn ui-disabled">
              <div class="ui-btn ui-disabled">
                <div class="ui-btn ui-disabled">
                  <div class="ui-btn ui-disabled">
                    <div class="ui-btn ui-disabled">
                      <div>
                        <div>
                          <div>
                            <div>
                              <div>
                                <div>
                                  <div>
                                    <div>
                                      <div>
                                        <div>
                                          <button id="start">
                                            Start
                                          </button>
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>

Setup

var el = document.getElementById('start');

Test runner

Ready to run.

Testing in
TestOps/sec
JQ.hasClass
function closestEnabledButton(element) {
  var $ele;
  while (element) {
    $ele = $(element);
    if ($ele.hasClass("ui-btn") && !$ele.hasClass("ui-disabled")) {
      break;
    }
    element = element.parentNode;
  }
  return element;
}
closestEnabledButton( el );
ready
IndexOf
function closestEnabledButton(element) {
  var cname;

  while (element) {
    cname = element.className.split(' ');
    if (cname.indexOf("ui-btn") > -1 && cname.indexOf("ui-disabled") < 0) {
      break;
    }
    element = element.parentNode;
  }

  return element;
}
closestEnabledButton( el );
ready

Revisions

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

  • Revision 1: published by Eddie on
  • Revision 2: published by Ghislain on
  • Revision 3: published by Eddie on
  • Revision 4: published by Eddie on