jQuery.fn.indexOf()

by rwaldron

HTML

<p>A paragraph</p>
<p class="another">
Another paragraph
</p>
<p class="devious">
devious paragraph 1
</p>
<p class="devious">
devious paragraph 2
</p>

JavaScript

function equal( actual, expected, message ) {
    console.log(
        ( actual === expected && "PASS" ) || "FAIL", 
        message + ", Expected: " + expected + "; Actual: " + actual 
    );     
}

(function( jQuery ) {
    
    jQuery.fn.indexOf = function( selector ) {
        var i = 0, 
            length = this.length;
        
        for ( ; i < length; i++  ) {
            if ( jQuery.find.matchesSelector( this[i], selector ) ) {
                return i;
            }
        }
        return -1;
    };
    
})( jQuery );

equal(
    jQuery("p").length, 4, "Find 3 [p] elements"
);

equal(
    jQuery("p").indexOf(".another"), 1, "[p.another] is at index 1"
);

equal(
    jQuery("p").indexOf(".devious"), 2, "[p.devious] is at index 2"
);

equal(
    jQuery("p").indexOf(".foooo"), -1, "No index for [.foooo] can be found"
);