Is this a bug or simply a change in functionality I should be prepared
to cope with?

This code
------------------
<script src="http://jqueryjs.googlecode.com/files/jquery-1.2.5.js";></
script>
<span>1</span><span>2</span><span>3</span>
<script language=JavaScript><!--//
    $(function() {
        var arr=$("span").get();
        var txt=[];
        for(ai in arr) { txt.push(arr[ai].innerHTML); }
        alert("via get(): "+txt.join(","));
        $("span").each(function(i,o) { alert("via each #"+i
+".html="+o.innerHTML); });
    });
//--></script>
------------------

Will alert you "via get(): 3,2,1", however the each loop will report
the innerhtmls of the elements in order 1,2,3.  Earlier versions of
jquery (1.2.4 and lower) will report "via get(): 1,2,3".

Although the order of elements is not specified in the documentation,
I think that expecting them to be returned in document order is the
only rational behavior.  Is this an unintentional change?

It seems to boil down to a change in how the array is constructed in
makeArray.  In 1.2.4 it was done in order via:

------------------
for ( var i = 0, length = array.length; i < length; i++ )
  ret.push( array[ i ] );
------------------

whereas in 1.2.5 and 1.2.6 it is done by more consise, but reversing:

------------------
while( i )
  ret[--i] = array[i];
------------------

A simple way to fix this would be to insert "ret.reverse()" just
before ret is returned.


If there is somewhere I could have noted this as an existing bug or an
intentional change, I am sorry, I have looked all over.  Let me know
where I should have looked.

Thanks!

Reply via email to