从JSON数据

时间:2015-10-07 12:44:13

标签: jquery json listview jquery-mobile knockout.js

<ol class ="lists" id ="list1"data-bind="foreach: quiz.questions" >
    <li class="lists" >
        <div>
            <label class="question_que"><span data-bind="text: Name"></label></span>
            <ul  data-bind="foreach: Options">
                <li >
                    <fieldset data-role="controlgroup">
                        <input type="checkbox" name="checkbox-1a" id="checkbox-1a" data-bind="checked:IsAnswer">
                        <label for="checkbox-1a" class="ch_box"><span data-bind="text:Name"> </span></label>
                    </fieldset>
                </li>
            </ul>
        </div>
    </li>
</ol>

KO绑定工作正常,我在IsAnswer分配了真假,但list view有时没有显示复选框。

如何在不丢失风格的情况下完成任务?

1 个答案:

答案 0 :(得分:0)

我想你使用像#checkbox-1a这样的ID选择器来控制你的控件样式。

您不得对同一文档中的不同DOM元素使用相同的ID。这是HTML规范。如果你这样做,你会得到奇怪的行为。

为避免重复ID,您可以做两件事:

1)删除id,并将复选框包装在label标签内,这样就不需要id:

<label class="ch_box">
  <input type="checkbox" .../>
  <span data-bind="text:Name"></span>
</label>

2)绑定id属性并使用$index生成唯一ID,如下所示:

<label data-bind="
  attr{id: 'check-box-q' + $parentContext.$index() + 'a' + $index()}" ...

或许,对于这两种解决方案中的任何一种,您都必须更改CSS样式,但是您没有在问题中显示它们