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 = /,/,
|
||||
isSimple = /^.[^:#\[\.,]*$/,
|
||||
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({
|
||||
find: function( selector ) {
|
||||
|
@ -206,7 +213,7 @@ jQuery.each({
|
|||
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 ) ) {
|
||||
ret = ret.reverse();
|
||||
|
|
Loading…
Reference in a new issue