knockout.js - IE-7 CSS класса выпуск - PullRequest
7 голосов
/ 26 октября 2011

Вот небольшая забавная проблема, с которой я столкнулся при динамической установке класса для массива div.

Используя Knockout.js, я назначаю классы, используемые через привязку 'attr'.

Это хорошо работает во всех протестированных мною браузерах, кроме IE-7 (не беспокоюсь о IE-6 и т. Д.)

У меня есть пример jsfiddle, освещающий проблему здесь

В этом примере статический (верхний ряд) должен совпадать с нижним (сгенерированный ко). В IE-7 я просто вижу самый широкий цвет селектора CSS (Silver)

Ответы [ 2 ]

10 голосов
/ 26 октября 2011

IE7 требует, чтобы вы установили className вместо class.

Например, это работает в IE7 и других браузерах: http://jsfiddle.net/thirtydot/VVuGh/14/

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

Тем не менее, поддержка этой причуды IE7 в идеале не должна быть в вашем HTML.Внутри knockout.js было бы лучше, хотя я ничего не знаю о библиотеке, чтобы можно было дать такую ​​рекомендацию.

0 голосов
/ 05 апреля 2012

Если ваше имя класса не может быть определено при создании шаблона (т. Е. Оно является частью вашей модели), вы можете создать пользовательскую привязку .

Содержимое вашегоМетоды 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...