Added the new :has() selector (Bug #1521)
authorJohn Resig <jeresig@gmail.com>
Tue, 21 Aug 2007 07:33:52 +0000 (07:33 +0000)
committerJohn Resig <jeresig@gmail.com>
Tue, 21 Aug 2007 07:33:52 +0000 (07:33 +0000)
src/selector/selector.js
src/selector/selectorTest.js

index f2c224a..cf23111 100644 (file)
@@ -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"
        },
index 7644fbe..7a4789a 100644 (file)
@@ -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" );