From: John Resig Date: Tue, 21 Aug 2007 07:33:52 +0000 (+0000) Subject: Added the new :has() selector (Bug #1521) X-Git-Url: http://git.asbjorn.biz/?a=commitdiff_plain;h=46e770352a9d68fe72a2cf59fc2d18fe61669730;p=jquery.git Added the new :has() selector (Bug #1521) --- diff --git a/src/selector/selector.js b/src/selector/selector.js index f2c224a..cf23111 100644 --- a/src/selector/selector.js +++ b/src/selector/selector.js @@ -53,7 +53,10 @@ jQuery.extend({ image: "'image'==a.type", reset: "'reset'==a.type", button: '"button"==a.type||jQuery.nodeName(a,"button")', - input: "/input|select|textarea|button/i.test(a.nodeName)" + input: "/input|select|textarea|button/i.test(a.nodeName)", + + // :has() + has: "jQuery.find(m[3],a).length" }, "[": "jQuery.find(m[2],a).length" }, diff --git a/src/selector/selectorTest.js b/src/selector/selectorTest.js index 7644fbe..7a4789a 100644 --- a/src/selector/selectorTest.js +++ b/src/selector/selectorTest.js @@ -197,7 +197,7 @@ test("pseudo (:) selectors", function() { }); test("basic xpath", function() { - expect(16); + expect(17); ok( jQuery.find("//*").length >= 30, "All Elements (//*)" ); ok( jQuery.find("//div", q("main")[0])[0] = q("foo")[0], "All Relative (#main//div)" ); t( "All P Elements", "//p", ["firstp","ap","sndp","en","sap","first"] ); @@ -213,6 +213,7 @@ test("basic xpath", function() { t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","table","fx-queue","fx-tests","sndp","en","sap"] ); t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","table","fx-queue","fx-tests","sndp","en","sap"] ); t( "Has Children", "//p[a]", ["firstp","ap","en","sap"] ); + t( "Has Children - :has()", "//p:has(a)", ["firstp","ap","en","sap"] ); $("#foo").each(function() { isSet( $("/p", this).get(), q("sndp", "en", "sap"), "Check XPath context" );