javascript - 使用 knockout.js 的可见性样式绑定(bind)失败

标签 javascript jquery css knockout.js visibility

data-bind="style : { display : repeat() === 'Custom' ? 'block' : 'none' }"

此样式绑定(bind)使用 knockout 成功,但以下失败

data-bind="style : { visibility : repeat() === 'Custom' ? 'visible' : 'hidden' }"

为什么?

我可以使用可见绑定(bind),但在我的情况下,我不想丢失该 div 空间,即使它是隐藏的。

我怎样才能做到这一点?

我不想使用 jquery 来实现这一点,因为我已经成功地使用了它。

最佳答案

解决此问题的另一种方法是创建您自己的绑定(bind)。这听起来很难,但它真的很容易,而且 KO 在设计时就考虑到了自定义绑定(bind)。我希望基础包有更多,但创建起来很简单。此解决方案的优点是您的绑定(bind)简单易读。这是一个名为隐藏的示例:

ko.bindingHandlers.hidden = (function() {
    function setVisibility(element, valueAccessor) {
        var hidden = ko.unwrap(valueAccessor());
        $(element).css('visibility', hidden ? 'hidden' : 'visible');
    }
    return { init: setVisibility, update: setVisibility };
})();

并在您的 HTML 中用作:

data-bind="hidden: !repeat()"

关于javascript - 使用 knockout.js 的可见性样式绑定(bind)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757220/

相关文章:

javascript - window.open 在 chrome 扩展弹出窗口中不起作用

javascript - 我如何检测是否安装了 Flash,如果没有,显示一个隐藏的 div 来通知用户?

css - 粘性页脚被迫在短页面底部

javascript - 使用带有外部 JavaScript 文件的 onMouseOver 和 onMouseOut 突出显示表格行

javascript - 无法在支付网关的通用应用程序的 Web View 中运行 JavaScript 警报

javascript - 两个委托(delegate)函数中只有一个起作用

javascript - 当 iframe 内容执行 window.close 时执行某些操作

javascript - 在 YouTube 视频之间缓冲

伪元素前后的 CSS 在 Edge 和 IE 11 中不起作用

css - 无法弄清楚为什么 CSS 会这样工作