While Through DOM

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;
}
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