Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从一组复选框绑定外部容器css?_Javascript_Css_Twitter Bootstrap_Knockout.js - Fatal编程技术网

Javascript 如何从一组复选框绑定外部容器css?

Javascript 如何从一组复选框绑定外部容器css?,javascript,css,twitter-bootstrap,knockout.js,Javascript,Css,Twitter Bootstrap,Knockout.js,好吧,这道题的语法的确很糟糕,但下面是一个事实: 我正在我的站点中使用以下内容: 推特引导 击倒 杜兰达尔 我正在尝试将css类添加到复选框(在复选框列表中)周围的外部标签中,以便它可以突出显示选定的复选框。基本上,代码是这样的: <div data-bind="foreach:values"> <label class="checkbox inline btn" data-bind="css: { }"> <input type="ch

好吧,这道题的语法的确很糟糕,但下面是一个事实:

我正在我的站点中使用以下内容:

  • 推特引导
  • 击倒
  • 杜兰达尔
我正在尝试将css类添加到复选框(在复选框列表中)周围的外部标签中,以便它可以突出显示选定的复选框。基本上,代码是这样的:

<div data-bind="foreach:values">
    <label class="checkbox inline btn" data-bind="css: { }">
        <input type="checkbox" data-bind="attr: { value: text }, checked: $parent.checkedValues" /> 
        <span data-bind="text: text"></span>
    </label>
</div>

所以,我要做的是将btn主类添加到选中复选框的外部标签中。我没有将full viewmodel放在这里,而是创建了一个小提琴:


我知道我可以使用$data对象来获取当前项,但我不知道如何检查当前项($data.text)是否在checkedValues observableArray中。我肯定我缺少的可能是基本的Javascript,但是有没有办法不用计算值就可以做到这一点呢?

您可以试试这个谓词:

$parent.checkedValues().indexOf($data.text) >= 0
我为你的小提琴创作了一首曲子


我希望这会有所帮助。

您可以通过检查父级的checkedValues数组,在
css
绑定中直接执行此操作

<label 
    class="checkbox inline btn" 
    data-bind="css: {'btn-primary': $parent.checkedValues.indexOf(text) > -1}">


这真的很接近-这里唯一要做的就是包含括号
checkedValues()
使用底层JS数组。因此,它取决于具有
indexOf
功能的阵列原型。有些浏览器不支持这个,包括IE,你是对的,我没想到。感谢您的评论。我不知道您可以使用像这样的
选中的
绑定填充一个项目数组。那是handySuperb!非常感谢你简单明了的回答。