1 var classesWrittenByBindingKey = '__ko__cssValue';
2 ko.bindingHandlers['css'] = {
3 'update': function (element, valueAccessor) {
4 var value = ko.utils.unwrapObservable(valueAccessor());
5 if (value !== null && typeof value == "object") {
6 ko.utils.objectForEach(value, function(className, shouldHaveClass) {
7 shouldHaveClass = ko.utils.unwrapObservable(shouldHaveClass);
8 ko.utils.toggleDomNodeCssClass(element, className, shouldHaveClass);
11 value = ko.utils.stringTrim(String(value || '')); // Make sure we don't try to store or set a non-string value
12 ko.utils.toggleDomNodeCssClass(element, element[classesWrittenByBindingKey], false);
13 element[classesWrittenByBindingKey] = value;
14 ko.utils.toggleDomNodeCssClass(element, value, true);