git.asbjorn.biz
/
jquery.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make sure events exist before trying to access them in jQuery.event.handle and remove...
[jquery.git]
/
src
/
traversing.js
diff --git
a/src/traversing.js
b/src/traversing.js
index
a09ae19
..
6ae9924
100644
(file)
--- a/
src/traversing.js
+++ b/
src/traversing.js
@@
-24,7
+24,7
@@
var winnow = function( elements, qualifier, keep ) {
if ( isSimple.test( qualifier ) ) {
return jQuery.filter(qualifier, filtered, !keep);
} else {
if ( isSimple.test( qualifier ) ) {
return jQuery.filter(qualifier, filtered, !keep);
} else {
- qualifier = jQuery.filter( qualifier, elements );
+ qualifier = jQuery.filter( qualifier, filtered );
}
}
}
}
@@
-82,7
+82,7
@@
jQuery.fn.extend({
closest: function( selectors, context ) {
if ( jQuery.isArray( selectors ) ) {
closest: function( selectors, context ) {
if ( jQuery.isArray( selectors ) ) {
- var ret = [], cur = this[0], match, matches = {}, selector;
+ var ret = [], cur = this[0], match, matches = {}, selector, level = 1;
if ( cur && selectors.length ) {
for ( var i = 0, l = selectors.length; i < l; i++ ) {
if ( cur && selectors.length ) {
for ( var i = 0, l = selectors.length; i < l; i++ ) {
@@
-100,11
+100,11
@@
jQuery.fn.extend({
match = matches[selector];
if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
match = matches[selector];
if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
- ret.push({ selector: selector, elem: cur });
- delete matches[selector];
+ ret.push({ selector: selector, elem: cur, level: level });
}
}
cur = cur.parentNode;
}
}
cur = cur.parentNode;
+ level++;
}
}
}
}
@@
-146,9
+146,9
@@
jQuery.fn.extend({
jQuery.makeArray( selector ),
all = jQuery.merge( this.get(), set );
jQuery.makeArray( selector ),
all = jQuery.merge( this.get(), set );
- return this.pushStack( set[0] && (set[0].setInterval || set[0].nodeType === 9 || (set[0].parentNode && set[0].parentNode.nodeType !== 11)) ?
- jQuery.unique( all ) :
- all );
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
},
andSelf: function() {
},
andSelf: function() {
@@
-156,6
+156,12
@@
jQuery.fn.extend({
}
});
}
});
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
jQuery.each({
parent: function( elem ) {
var parent = elem.parentNode;
jQuery.each({
parent: function( elem ) {
var parent = elem.parentNode;
@@
-229,7
+235,7
@@
jQuery.extend({
dir: function( elem, dir, until ) {
var matched = [], cur = elem[dir];
dir: function( elem, dir, until ) {
var matched = [], cur = elem[dir];
- while ( cur && cur.nodeType !== 9 && (until === undefined || !jQuery( cur ).is( until )) ) {
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
if ( cur.nodeType === 1 ) {
matched.push( cur );
}
if ( cur.nodeType === 1 ) {
matched.push( cur );
}