> From: ~flow
>
> the second suggestion does work; however, the
> pre-incrementing index has to be written as a
> post-incrementing index, like this:
>
> var t = $( '.foo' );
> var s = t;
> t[ t.length++ ] = $Q( '.bar' )[ 0 ]; // should now like
> like $ ( '.foo,.bar' )
> assert( s === t, 'object identity broken' )
>
> because we need exactly `t.length` as the target index, as
> indices start at 0. (jQuery, unlike the standard Array
> object, would not appear to accept assignments to unassigned
> indices greater than the length of the object; if done, the
> result is an `undefined` value augmented to the jQuery
> object, but the assignment's right hand side gets lost.)
That can't possibly be right (the part in parentheses). I think you're
misunderstanding a fundamental bit of JavaScript.
I didn't see what code you tried that failed, but if you still have it and
want to understand the *real* reason it failed, post it and I'll explain it.
If it's the code from Ricardo's message:
$foo[ ++$foo.length ] = $('.bar')[0];
then you're right, that needs to use a postincrement. But the reason it
doesn't work as expected is simply that it assigns into an array element
index one greater than it should.
-Mike