This commit is contained in:
Mike Bostock 2011-10-07 12:18:33 -07:00
Родитель 440d96155f cf882501ef
Коммит 9e303516f0
4 изменённых файлов: 53 добавлений и 4 удалений

17
d3.js поставляемый
Просмотреть файл

@ -1333,6 +1333,21 @@ d3_selectionPrototype.attr = function(name, value) {
: (name.local ? attrConstantNS : attrConstant)));
};
d3_selectionPrototype.classed = function(name, value) {
var names = name.split(d3_selection_classedWhitespace),
n = names.length,
i = -1;
if (arguments.length > 1) {
while (++i < n) d3_selection_classed.call(this, names[i], value);
return this;
} else {
while (++i < n) if (!d3_selection_classed.call(this, names[i])) return false;
return true;
}
};
var d3_selection_classedWhitespace = /\s+/g;
function d3_selection_classed(name, value) {
var re = new RegExp("(^|\\s+)" + d3.requote(name) + "(\\s+|$)", "g");
// If no value is specified, return the first value.
@ -1377,7 +1392,7 @@ d3_selectionPrototype.classed = function(name, value) {
? classedFunction : value
? classedAdd
: classedRemove);
};
}
d3_selectionPrototype.style = function(name, value, priority) {
if (arguments.length < 3) priority = "";

4
d3.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,4 +1,19 @@
d3_selectionPrototype.classed = function(name, value) {
var names = name.split(d3_selection_classedWhitespace),
n = names.length,
i = -1;
if (arguments.length > 1) {
while (++i < n) d3_selection_classed.call(this, names[i], value);
return this;
} else {
while (++i < n) if (!d3_selection_classed.call(this, names[i])) return false;
return true;
}
};
var d3_selection_classedWhitespace = /\s+/g;
function d3_selection_classed(name, value) {
var re = new RegExp("(^|\\s+)" + d3.requote(name) + "(\\s+|$)", "g");
// If no value is specified, return the first value.
@ -43,4 +58,4 @@ d3_selectionPrototype.classed = function(name, value) {
? classedFunction : value
? classedAdd
: classedRemove);
};
}

Просмотреть файл

@ -83,6 +83,25 @@ suite.addBatch({
},
"returns the current selection": function(body) {
assert.isTrue(body.classed("foo", true) === body);
},
"adds missing classes as true": function(body) {
body.attr("class", null);
body.classed("foo bar", true);
assert.equal(document.body.className, "foo bar");
},
"gets existing classes": function(body) {
body.attr("class", " foo\tbar baz");
assert.isTrue(body.classed("foo"));
assert.isTrue(body.classed("foo bar"));
assert.isTrue(body.classed("bar baz"));
assert.isTrue(body.classed("foo bar baz"));
},
"does not get missing classes": function(body) {
body.attr("class", " foo\tbar baz");
assert.isFalse(body.classed("foob"));
assert.isFalse(body.classed("foob bar"));
assert.isFalse(body.classed("bar baz blah"));
assert.isFalse(body.classed("foo bar baz moo"));
}
}
});