我有一个看起来像这样的按钮:
<button data-bind="enable: valid, css:{'btn-primary': valid() === true}">
我想使用相同的条件valid() === true
禁用。本质上,当我的函数等于使用knockout绑定的pointer-events: none
时,我想添加true
。
答案 0 :(得分:1)
您的标题显示“禁用悬停”,但问题(从之前的PO评论中翻译)提到想要添加pointer-events
css值。我假设后者是最后的指示。
根据@ SivanrajM的评论,最明智的方法是启用/禁用一个类。例如:
ko.applyBindings({ valid: ko.observable(true) });
// For demo purposes:
document.querySelector("button").addEventListener("click", function() {
alert("clicked!");
});
.btn-primary { text-transform: uppercase; }
.no-ptr-evts { pointer-events: none; color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>
<button data-bind="enable: valid,
css: { 'btn-primary': valid,
'no-ptr-evts': valid }">
(try to) click me
</button>
<hr>
<label><input type="checkbox" data-bind="checked: valid"> `valid`</label>
我不清楚为什么你会想要(根据你的问题)在valid() === true
时禁用指针事件,但是嘿:这取决于你!
请注意,我已将valid() === true
简化为valid
,这相当于。{/ p>
顺便说一下,如果你想跳过创建一个单独的类并进行内联样式的淘汰 - 类比,请使用the style
binding:
ko.applyBindings({ valid: ko.observable(true) });
// For demo purposes:
document.querySelector("button").addEventListener("click", function() {
alert("clicked!");
});
.btn-primary { text-transform: uppercase; }
.no-ptr-evts { pointer-events: none; color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>
<button data-bind="enable: valid,
css: { 'btn-primary': valid },
style: { 'pointer-events': valid() ? 'none' : 'auto' }">
(try to) click me
</button>
<hr>
<label><input type="checkbox" data-bind="checked: valid"> `valid`</label>