Bug Tracker

Ticket #3687: jquery_inarray.patch

File jquery_inarray.patch, 1.2 KB (added by gabriel, 13 years ago)
  • jquery/src/core.js

     
    11501150        inArray: function( elem, array ) {
    11511151                for ( var i = 0, length = array.length; i < length; i++ )
    11521152                // Use === because on IE, window == document
    1153                         if ( array[ i ] === elem )
     1153        // added second condition because when comparing two arrays containing identical elements, false is returned
     1154                if (( array[ i ] === elem ) || (( array[ i ] instanceof Array ) && jQuery.compareArrays(elem, array[ i ]) ))
    11541155                                return i;
    11551156
    11561157                return -1;
    11571158        },
    11581159
     1160        compareArrays: function( array1, array2 ) {
     1161    // adapted from code by Patrick Hunlock
     1162    // http://www.hunlock.com/blogs/Mastering_Javascript_Arrays
     1163          if ( array1.length != array2.length ) return false;
     1164    for ( var i = 0; i < array2.length; i++ ) {
     1165        if ( array1[i] instanceof Array ) {
     1166          if ( !jQuery.compareArrays(array1[i], array2[i]) ) return false;
     1167        }
     1168        if ( array1[i] !== array2[i] ) return false;
     1169    }
     1170    return true;
     1171        },
     1172
    11591173        merge: function( first, second ) {
    11601174                // We have to loop this way because IE & Opera overwrite the length
    11611175                // expando of getElementsByTagName