分类Knockout js选择框

时间:2012-07-22 17:11:20

标签: javascript data-binding knockout.js knockout-2.0

假设我有以下knockoutjs绑定


var optionsWithCategory = [
  "Category: Person", // Category option should be disabled, or non-selectable
  "Jason",
  "John",

  "Category: Department",
  "Human Resource",
  "Sales"
];

<div id="selectBox">
<select databind="options: optionsWithCategory"></select>
</div>

我可以采取哪些方法将disable="disable"添加到文本值以options开头的所有Category: DOM元素。因此PersonDepartment实际上是不可选择的,但在选择框中充当分隔符。此外,select框会动态添加到selectBox div元素。

我提出的一种方式是:

$('#selectBox').bind('DOMNodeInserted', function (e) {
    if (e.target.text != undefined && e.target.text.indexOf(':') >= 0) {
        $(e.target).attr("disabled", "disabled");
    }
});

但它看起来不太优雅,还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

我不确定有什么干净的方法可以做到这一点,因为它有点不常用

但是你可以用你所写的代码做类似的代码,或者你也可以创建自己的绑定处理程序来执行它。我建议使用绑定处理程序,因为它会将所有逻辑包装在一个地方。