javascript - 在knockoutjs中始终使用jquerylideUpslideDown

标签 javascript jquery knockout.js knockout-2.0

我知道如何在 knockoutjs 中创建自定义绑定(bind),以便在可观察值发生变化时添加 jquery 过渡动画。

我想知道每当可见性根据可观察值发生变化时,是否有某种方法可以附加像 SlideUp/slideDown 这样的转换。

例如,当使用 'with' 绑定(bind)时,当 observable 的值变为 null 时,DOM 元素会自动变得不可见。每当发生这种情况时,我想添加一个 jquery 转换。

最佳答案

这可以通过使用自定义绑定(bind)来完成。

<强> See this fiddle

HTML

<div>
    Visible <input type="checkbox" data-bind="checked: visible" />
    <div data-bind="slideIn: visible" class="slider">
        <h1>I'm visible</h1>
    </div>
</div>

CSS

.slider
{
    border: solid 1px rgb(200, 200, 200);
    color: rgb(50, 50, 50);
    background-color: rgb(100,255,100);
    text-align: center;
}

JavaScript

var VM = function(){
    this.visible = ko.observable(true)
};

ko.bindingHandlers.slideIn = {
    init: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        $(element).toggle(value);
    },
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        value ? $(element).slideDown() : $(element).slideUp();
    }
};

ko.applyBindings(new VM());

关于javascript - 在knockoutjs中始终使用jquerylideUpslideDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536881/

相关文章:

javascript - 哪个 jQuery 事件处理程序适用于页面加载?

javascript - 从 anchor 标记中的另一个内部触发js函数

javascript - 无法从数据属性中提取文本

angularjs - AngularJS 中 KnockoutJS 的 "with"绑定(bind)?

javascript - Durandal ko映射: mapped li not rendered in DOM

javascript - 使用 PhantomJS 在同一行打印数据

javascript - IE7 : Can't display popup box when hovering over transparent background

javascript - 如何使用递归解析json时获取id?

javascript - 为什么 DOM 单击事件需要这么长时间?

javascript - 通过 Knockout 进行高效模型绑定(bind)