css - 如何使 Knockout 成为 Knockout 可见标签使用 display :none ! 重要

标签 css twitter-bootstrap knockout.js twitter-bootstrap-3 knockout-3.0

我有一个同时使用 knockout 和 bootstrap 的站点,我需要使用 knockout 可见数据绑定(bind)来根据给定条件添加和删除某些元素,但是,当 knockout 添加 style="display:none"时div 它会被 Bootstrap 覆盖,因为 hidden-mdhidden-lg 使用 display:block !在较小的屏幕上很重要

 <div class="col-xs-1 hidden-md hidden-lg" data-bind="visible: BooleanValue"></div>

是否有一种简单的方法可以使用 style="display:none !important" 来使我的值不显示?

干杯。

最佳答案

您可以使用 css 绑定(bind)并将样式规则添加到样式指南的(底部):

ko.applyBindings({booleanValue: ko.observable(true)});
.block {
  display: block !important;
}

.hide-important {
  display: none !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>


<div class="block" data-bind="visible: booleanValue">
  visible binding
</div>

<div class="block" data-bind="css: {'hide-important': !booleanValue()}">
  css binding
</div>

<button data-bind="click: booleanValue.bind(null, !booleanValue())">toggle</button>

或者,您可以实现自定义可见绑定(bind):

ko.bindingHandlers['importantVisible'] = {
  'update': function(element, valueAccessor) {
    var show = ko.utils.unwrapObservable(valueAccessor());
    if (!show)
      element.style.setProperty("display", "none", "important")
    else
      element.style.display = "";
      
  }
};

ko.applyBindings({ booleanValue: ko.observable(true) });
.block {
  display: block !important;
}

.hide-important {
  display: none !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<div class="block" data-bind="importantVisible: booleanValue">
  importantVisible binding
</div>


<div class="block" data-bind="visible: booleanValue">
  visible binding
</div>

<div class="block" data-bind="css: {'hide-important': !booleanValue()}">
  css binding
</div>

<button data-bind="click: booleanValue.bind(null, !booleanValue())">toggle</button>

关于css - 如何使 Knockout 成为 Knockout 可见标签使用 display :none ! 重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901628/

相关文章:

javascript - 不同元素样式的分组变化

javascript - Bootstrap 框架列在选项卡内容中不起作用

twitter-bootstrap - Bootstrap右拉重叠div宽度

javascript - JQuery 验证表单但不是 `submit` 按钮

javascript - IE8 knockout 错误 - 无法处理绑定(bind)

knockout.js - Knockout - 下拉列表中所选项目的只读模型绑定(bind)

html - 对不应该在 div 中旋转的文本进行故障排除

css - 溢出-y : auto and overflow-x: visible in the same time?

css - 表内容边距

knockout.js - 如何使用 knockout.js 启用或禁用按钮