fix diff of css rule removal

This commit is contained in:
Leo Horie 2014-05-09 22:21:43 -04:00
parent dc9cae09fc
commit 63a7461657
6 changed files with 41 additions and 6 deletions

View file

@ -137,10 +137,13 @@ Mithril = m = new function app(window) {
else if (typeof dataAttr == "function" && attrName.indexOf("on") == 0) {
node[attrName] = autoredraw(dataAttr, node)
}
else if (attrName === "style") {
else if (attrName === "style" && typeof dataAttr == "object") {
for (var rule in dataAttr) {
if (cachedAttr === undefined || cachedAttr[rule] !== dataAttr[rule]) node.style[rule] = dataAttr[rule]
}
for (var rule in cachedAttr) {
if (!(rule in dataAttr)) node.style[rule] = ""
}
}
else if (namespace !== undefined) {
if (attrName === "href") node.setAttributeNS("http://www.w3.org/1999/xlink", "href", dataAttr)
@ -150,7 +153,7 @@ Mithril = m = new function app(window) {
else if (attrName === "value" && tag === "input") {
if (node.value !== dataAttr) node.value = dataAttr
}
else if (attrName in node && attrName != "list") node[attrName] = dataAttr
else if (attrName in node && !(attrName == "list" || attrName == "style")) node[attrName] = dataAttr
else node.setAttribute(attrName, dataAttr)
}
}