首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用knockout选中一列中的所有复选框?

如何使用knockout选中一列中的所有复选框?
EN

Stack Overflow用户
提问于 2016-12-27 17:46:38
回答 1查看 127关注 0票数 0

免责声明:我工作的环境必须是完全内联的。HTML调用了一个我不允许编辑的JS文件。也就是说,当我单击标题行时,我正在尝试选中/取消选中列中的所有复选框。我希望能够像往常一样选择/取消选择标题下面的任何单独的行,但当我检查标题时,我希望下面的每一行都选择/取消选择。

现在我的问题是,选择标题行只能选择或取消选择一次。因此,只需单击它一次,即可取消选中每一行,但随后该功能将停止。无论如何,复选框也不会出现在标题行中。但这是一个不同的问题。

问题存在于第一个表的行-->标签类标签中。有什么建议吗?

代码语言:javascript
运行
AI代码解释
复制
<tbody>
    <tr>
        <td class="feature-name">All</td>
        <!-- ko foreach: $parent.featureHeadings[$index()] -->
        <td data-bind="css:{alt: !($index() % 2)}">
            <label class="multiple-checkboxes">
                <input type="checkbox" data-bind="checked: $parent.dataItems.every(function (acct) { 
                return !acct.features[$index()].isVisible() ||
                acct.features[$index()].value(); }), 
                click: function (data, index, model, event) 
                { 
                var newValue = event.srcElement.checked; 
                data.forEach(function (acct) { 
                if (acct.features[index].isVisible()) 
                    acct.features[index].value(newValue); 
                    }
                    ); 
                    }.bind($data, $parent.dataItems, $index())" />
            </label>
        </td>
        <!-- /ko -->
    </tr>
    <!--  ko foreach: dataItems -->
    <tr>
        <td class="feature-name" data-bind="text: name"></td>
        <!-- ko foreach: features -->
        <td class="setting" data-bind="highlightOverride: isOverridden(), css: { alt: !($index() % 2) }, highlightHelpHint: isHintActive">
        <!-- ko if: type === 'Boolean' -->
        <label class="checkbox" data-bind="css: { checked: value }, fadeVisible: isVisible()"><input type="checkbox" data-bind="checked: value" /></label>
        <!-- /ko -->
        </td>
        <!-- /ko -->
    </tr>
    <!-- /ko -->
</tbody>

编辑:感谢大家的阅读。很抱歉,我不能提供更多的细节,让您来帮助我。这是最终的解决方案。

代码语言:javascript
运行
AI代码解释
复制
<label class="multiple-checkboxes" data-bind="css: { checked: $parent.dataItems.every(function (acct) { return !acct.features[$index()].isVisible() || acct.features[$index()].value(); }) }, click: function (data, index, model, event) { var newValue = !event.srcElement.classList.contains('checked'); data.forEach(function (acct) { if (acct.features[index].isVisible()) acct.features[index].value(newValue); }); }.bind($data, $parent.dataItems, $index())">
EN

回答 1

Stack Overflow用户

发布于 2016-12-28 14:43:37

这是可行的:

代码语言:javascript
运行
AI代码解释
复制
<label class="multiple-checkboxes" data-bind="css: { checked: $parent.dataItems.every(function (acct) { return !acct.features[$index()].isVisible() || acct.features[$index()].value(); }) }, click: function (data, index, model, event) { var newValue = !event.srcElement.classList.contains('checked'); data.forEach(function (acct) { if (acct.features[index].isVisible()) acct.features[index].value(newValue); }); }.bind($data, $parent.dataItems, $index())">

我想将问题标记为已回答,但您可以看到我是新来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41349757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档