2011-10-25 30 views
7

這是一個有趣的小問題,我碰到過 動態設置一個div數組的類。knockout.js - IE-7的css類問題

使用Knockout.js我分配了通過'attr'綁定使用的類。

這非常適用於除IE-7(不擔心IE-6等)

我有一個的jsfiddle示例突出issue here

在示例中,靜態的(頂部我已經測試了所有的瀏覽器行)應符合下一個(KO產生) 在IE7我只是看到了最廣泛的CSS選擇器的顏色(銀色)

+0

我更新了jsfiddle - http://jsfiddle.net/VVuGh/11/ - 標題現在設置爲與課程相同。如果您將鼠標懸停在動態廣場上,您可以看到標題設置正確 –

回答

10

IE7要求設置className而不是class

舉例來說,這部作品在IE7 和其他瀏覽器:http://jsfiddle.net/thirtydot/VVuGh/14/

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

然而,對於這個IE7怪癖支持最好應不會在你的HTML。在knockout.js裏面會是一個更好的地方,但我對圖書館一無所知可以提出這樣的建議。

+0

感謝堆答案! –

0

如果您在生成模板(即它是模型的一部分)時無法確定您的類名,則可以創建一個custom binding。基於什麼由valueAccessor返回element

init/update方法的內容將剛纔設置的類名。舉個簡單的例子,你可以做(​​使用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