return match.test( elem.className );
},
ATTR: function(elem, match){
- var result = Expr.attrHandle[ match[1] ] ? Expr.attrHandle[ match[1] ]( elem ) : elem[ match[1] ] || elem.getAttribute( match[1] ), value = result + "", type = match[2], check = match[4];
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
return result == null ?
type === "!=" :
type === "=" ?
type === "~=" ?
(" " + value + " ").indexOf(check) >= 0 :
!check ?
- result :
+ value && result !== false :
type === "!=" ?
value != check :
type === "^=" ?
});
test("attributes", function() {
- expect(37);
+ expect(40);
t( "Attribute Exists", "a[title]", ["google"] );
t( "Attribute Exists", "*[title]", ["google"] );
t( "Attribute Exists", "[title]", ["google"] );
t( "for Attribute", "form label[for]", ["label-for"] );
t( "for Attribute in form", "#form [for=action]", ["label-for"] );
+
+ jQuery("form input")[0].test = 0;
+ jQuery("form input")[1].test = 1;
+
+ t( "Expando attribute", "form input[test]", ["text1", "text2"] );
+ t( "Expando attribute value", "form input[test=0]", ["text1"] );
+ t( "Expando attribute value", "form input[test=1]", ["text2"] );
t( "Attribute containing []", "input[name^='foo[']", ["hidden2"] );
t( "Attribute containing []", "input[name^='foo[bar]']", ["hidden2"] );