Skip to content

Commit 8573e45

Browse files
committed
Merge pull request #631 from gurdiga/unqualified-attrs-fix
Selectors containing #id or .class are considered to be qualified
2 parents c4560af + a5631b0 commit 8573e45

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

src/rules/unqualified-attributes.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ CSSLint.addRule({
1313
//initialization
1414
init: function(parser, reporter) {
1515
"use strict";
16+
1617
var rule = this;
1718

1819
parser.addListener("startrule", function(event) {
1920

2021
var selectors = event.selectors,
22+
selectorContainsClassOrId = false,
2123
selector,
2224
part,
2325
modifier,
@@ -30,8 +32,19 @@ CSSLint.addRule({
3032
if (part.type === parser.SELECTOR_PART_TYPE) {
3133
for (k=0; k < part.modifiers.length; k++) {
3234
modifier = part.modifiers[k];
33-
if (modifier.type === "attribute" && (!part.elementName || part.elementName === "*")) {
34-
reporter.report(rule.desc, part.line, part.col, rule);
35+
36+
if (modifier.type === "class" || modifier.type === "id") {
37+
selectorContainsClassOrId = true;
38+
break;
39+
}
40+
}
41+
42+
if (!selectorContainsClassOrId) {
43+
for (k=0; k < part.modifiers.length; k++) {
44+
modifier = part.modifiers[k];
45+
if (modifier.type === "attribute" && (!part.elementName || part.elementName === "*")) {
46+
reporter.report(rule.desc, part.line, part.col, rule);
47+
}
3548
}
3649
}
3750
}

tests/rules/unqualified-attributes.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,17 @@
2828
"Using a qualified attribute selector should not result in a warning": function() {
2929
var result = CSSLint.verify("input[type=text] { font-size: 10px; } ", {"unqualified-attributes": 1 });
3030
Assert.areEqual(0, result.messages.length);
31-
}
31+
},
3232

33+
"Using an attribute selector qualified by a class should not result in a warning": function(){
34+
var result = CSSLint.verify(".fancy[type=text] { font-size: 10px; }", {"unqualified-attributes": 1 });
35+
Assert.areEqual(0, result.messages.length);
36+
},
37+
38+
"Using an attribute selector qualified by an ID should not result in a warning": function(){
39+
var result = CSSLint.verify("#fancy[type=text] { font-size: 10px; }", {"unqualified-attributes": 1 });
40+
Assert.areEqual(0, result.messages.length);
41+
}
3342

3443
}));
3544

0 commit comments

Comments
 (0)