Landing in jQuery.contains, jQuery.fn.contains, and jQuery.fn.has support. Fixes #4101.
This commit is contained in:
parent
9e60fec46b
commit
4e27f17007
|
@ -4,5 +4,6 @@ jQuery.expr[":"] = jQuery.expr.filters;
|
||||||
jQuery.unique = Sizzle.uniqueSort;
|
jQuery.unique = Sizzle.uniqueSort;
|
||||||
jQuery.getText = getText;
|
jQuery.getText = getText;
|
||||||
jQuery.isXMLDoc = isXML;
|
jQuery.isXMLDoc = isXML;
|
||||||
|
jQuery.contains = contains;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -57,6 +57,21 @@ jQuery.fn.extend({
|
||||||
return ret;
|
return ret;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
has: function( target ) {
|
||||||
|
var targets = jQuery( target );
|
||||||
|
return this.filter(function() {
|
||||||
|
for ( var i = 0, l = targets.length; i < l; i++ ) {
|
||||||
|
if ( jQuery.contains( this, targets[i] ) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
contains: function( target ) {
|
||||||
|
return this.has( target ).length > 0;
|
||||||
|
},
|
||||||
|
|
||||||
not: function( selector ) {
|
not: function( selector ) {
|
||||||
return this.pushStack( winnow(this, selector, false), "not", selector);
|
return this.pushStack( winnow(this, selector, false), "not", selector);
|
||||||
},
|
},
|
||||||
|
|
|
@ -152,7 +152,43 @@ test("not(jQuery)", function() {
|
||||||
expect(1);
|
expect(1);
|
||||||
|
|
||||||
same( jQuery("p").not(jQuery("#ap, #sndp, .result")).get(), q("firstp", "en", "sap", "first"), "not(jQuery)" );
|
same( jQuery("p").not(jQuery("#ap, #sndp, .result")).get(), q("firstp", "en", "sap", "first"), "not(jQuery)" );
|
||||||
})
|
});
|
||||||
|
|
||||||
|
test("has(Element)", function() {
|
||||||
|
expect(2);
|
||||||
|
|
||||||
|
var obj = jQuery("#main").has(jQuery("#sndp")[0]);
|
||||||
|
same( obj.get(), q("main"), "Keeps elements that have the element as a descendant" );
|
||||||
|
|
||||||
|
var multipleParent = jQuery("#main, #header").has(jQuery("#sndp")[0]);
|
||||||
|
same( obj.get(), q("main"), "Does not include elements that do not have the element as a descendant" );
|
||||||
|
});
|
||||||
|
|
||||||
|
test("has(Selector)", function() {
|
||||||
|
expect(3);
|
||||||
|
|
||||||
|
var obj = jQuery("#main").has("#sndp");
|
||||||
|
same( obj.get(), q("main"), "Keeps elements that have any element matching the selector as a descendant" );
|
||||||
|
|
||||||
|
var multipleParent = jQuery("#main, #header").has("#sndp");
|
||||||
|
same( obj.get(), q("main"), "Does not include elements that do not have the element as a descendant" );
|
||||||
|
|
||||||
|
var multipleHas = jQuery("#main").has("#sndp, #first");
|
||||||
|
same( multipleHas.get(), q("main"), "Only adds elements once" );
|
||||||
|
});
|
||||||
|
|
||||||
|
test("has(Arrayish)", function() {
|
||||||
|
expect(3);
|
||||||
|
|
||||||
|
var simple = jQuery("#main").has(jQuery("#sndp"));
|
||||||
|
same( simple.get(), q("main"), "Keeps elements that have any element in the jQuery list as a descendant" );
|
||||||
|
|
||||||
|
var multipleParent = jQuery("#main, #header").has(jQuery("#sndp"));
|
||||||
|
same( multipleParent.get(), q("main"), "Does not include elements that do not have an element in the jQuery list as a descendant" );
|
||||||
|
|
||||||
|
var multipleHas = jQuery("#main").has(jQuery("#sndp, #first"));
|
||||||
|
same( simple.get(), q("main"), "Only adds elements once" );
|
||||||
|
});
|
||||||
|
|
||||||
test("andSelf()", function() {
|
test("andSelf()", function() {
|
||||||
expect(4);
|
expect(4);
|
||||||
|
|
Loading…
Reference in a new issue