knockout.js - IE -7 css类问题

时间:2011-10-25 23:18:33

标签: css internet-explorer-7 knockout.js

这是我遇到的一个有趣的小问题 动态设置div数组的类。

使用Knockout.js我正在分配通过'attr'绑定使用的类。

除了IE-7(不担心IE-6等),我测试的所有浏览器都能正常使用

我有一个突出显示issue here

的jsfiddle示例

在示例中,静态(顶行)应与底部行匹配(生成ko) 在IE-7中,我只看到最广泛的css选择器颜色(银色)

2 个答案:

答案 0 :(得分:10)

IE7要求您设置className而不是class

例如,这适用于IE7 其他浏览器:http://jsfiddle.net/thirtydot/VVuGh/14/

<div data-bind='attr: { "class": classes, "className": classes }'></div>

但是,理想情况下,不应该在HTML中支持这种IE7怪癖。里面的knockout.js会是一个更好的地方,虽然我对图书馆一无所知,能够提出这样的建议。

答案 1 :(得分:0)

如果在生成模板时无法确定您的类名(即它是模型的一部分),则可以创建custom binding

init / update方法的内容只会根据element返回的内容设置valueAccessor的类名。举个简单的例子,你可以(使用jQuery):

ko.bindingHandlers.yourBindingName = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        // This will be called when the binding is first applied to an element
        // Set up any initial state, event handlers, etc. here

        $(element).addClass(valueAccessor());

    },
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        // This will be called once when the binding is first applied to an element,
        // and again whenever the associated observable changes value.
        // Update the DOM element based on the supplied values here.

    }
};

您可以根据挖空css binding构建更复杂的绑定。