Skip to content

Commit 6f4b08c

Browse files
committed
Added support for sorting in Safari - when querySelectorAll isn't able to be used.
1 parent d75c899 commit 6f4b08c

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

src/core.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ jQuery.fn = jQuery.prototype = {
7575
this.context = selector.context;
7676
}
7777

78-
return this.setArray(jQuery.makeArray(selector));
78+
return this.setArray(jQuery.isArray( selector ) ?
79+
selector :
80+
jQuery.makeArray(selector));
7981
},
8082

8183
// Start with an empty selector
@@ -95,7 +97,7 @@ jQuery.fn = jQuery.prototype = {
9597
return num === undefined ?
9698

9799
// Return a 'clean' array
98-
jQuery.makeArray( this ) :
100+
Array.prototype.slice.call( this ) :
99101

100102
// Return just the object
101103
this[ num ];

src/selector.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,17 @@ if ( document.documentElement.compareDocumentPosition ) {
679679
}
680680
return ret;
681681
};
682+
} else if ( Array.prototype.indexOf ) {
683+
var indexOf = Array.prototype.indexOf,
684+
allSort = document.getElementsByTagName("*");
685+
686+
sortOrder = function( a, b ) {
687+
var ret = indexOf.call( allSort, a ) - indexOf.call( allSort, b );
688+
if ( ret === 0 ) {
689+
hasDuplicate = true;
690+
}
691+
return ret;
692+
};
682693
}
683694

684695
// Check to see if the browser returns elements by name when

test/unit/selector.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module("selector");
22

33
test("element", function() {
4-
expect(13);
4+
expect(14);
55
reset();
66

77
ok( jQuery("*").size() >= 30, "Select all" );
@@ -24,6 +24,7 @@ test("element", function() {
2424
isSet( jQuery("p"), jQuery("p, div p"), "Check for duplicates: p, div p" );
2525

2626
t( "Checking sort order", "h2, h1", ["header", "banner", "userAgent"] );
27+
t( "Checking sort order", "h2:first, h1:first", ["header", "banner"] );
2728
t( "Checking sort order", "p, p a", ["firstp", "simon1", "ap", "google", "groups", "anchor1", "mark", "sndp", "en", "yahoo", "sap", "anchor2", "simon", "first"] );
2829
});
2930

0 commit comments

Comments
 (0)