#11109

Multiple sibling combinators don't return expected results

by Timmy Willison

HTML

<script src="http://getfirebug.com/firebug-lite-debug.js"></script>
<div id="test">
    <div>
        <div>
            <div></div>
        </div>
    </div>
    <div>
        <div></div>
    </div>
    <div>
        <div></div>
    </div>
    <span></span>
</div>

JavaScript

var selectors = {
    '#test > div *': 4,
    '#test > div:first-child + div ~ span': 1
};

document.querySelectorAll = null;

for ( selector in selectors ) {
    console.log( 'jQuery => selector: %o, expected: %d, result: %d', selector, selectors[ selector ],
                 jQuery( selector ).length );
}

// Native QSA
var qsa = HTMLDocument.prototype.querySelectorAll;
if ( qsa ) {
    for ( selector in selectors ) {
        try {
            console.log( 'querySelectorAll => selector: %o, expected: %d, result: %d',
                         selector, selectors[ selector ],
                         qsa.call( document, selector ).length );
        } catch( e ) {
            console.log( 'querySelectorAll failed: %o', e );
        }
    }
}