Avoid running jQuery.unique() for methods that are guaranteed to produce a unique result set. Fixes #7964 - Some traversal methods perform an unnecessary uniqueness check.
This commit is contained in:
parent
a8fa5f2ec1
commit
e5ee89ec9a
|
@ -6,7 +6,14 @@ var runtil = /Until$/,
|
||||||
rmultiselector = /,/,
|
rmultiselector = /,/,
|
||||||
isSimple = /^.[^:#\[\.,]*$/,
|
isSimple = /^.[^:#\[\.,]*$/,
|
||||||
slice = Array.prototype.slice,
|
slice = Array.prototype.slice,
|
||||||
POS = jQuery.expr.match.POS;
|
POS = jQuery.expr.match.POS,
|
||||||
|
// methods guaranteed to produce a unique set when starting from a unique set
|
||||||
|
guaranteedUnique = {
|
||||||
|
children: true,
|
||||||
|
contents: true,
|
||||||
|
next: true,
|
||||||
|
prev: true
|
||||||
|
};
|
||||||
|
|
||||||
jQuery.fn.extend({
|
jQuery.fn.extend({
|
||||||
find: function( selector ) {
|
find: function( selector ) {
|
||||||
|
@ -206,7 +213,7 @@ jQuery.each({
|
||||||
ret = jQuery.filter( selector, ret );
|
ret = jQuery.filter( selector, ret );
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = this.length > 1 ? jQuery.unique( ret ) : ret;
|
ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
|
||||||
|
|
||||||
if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
|
if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
|
||||||
ret = ret.reverse();
|
ret = ret.reverse();
|
||||||
|
|
Loading…
Reference in a new issue