1

我想添加一个产品,找到节点并让它闪烁

products = observableArray([]);

new_product = new Product();
products.push(new_product);
$("tr", new_product.elements).flash();

我尝试使用 afterAdd 但每次我添加一些东西时它都会闪烁。我只需要使用我的添加功能之一进行闪烁。添加的其他功能不应闪烁该元素。

注意:flash 是一个自定义的 JQuery 函数

4

1 回答 1

4

由于一个 observable 可以绑定到多个元素,因此最好的办法是以自定义绑定的形式真正从元素中获取它。

在最简单的情况下,您可以使用如下绑定:

ko.bindingHandlers.flash = {
    init: function(element) {
        $(element).flash();
    }
};

在您的元素上使用它,例如:<li data-bind="flash: true"></li>. 在这种情况下,您传递给绑定的内容无关紧要。

这是一个示例:http: //jsfiddle.net/rniemeyer/Exmvh/

您当然可以将选项传递给您的绑定,例如:

ko.bindingHandlers.flash = {
    init: function(element, valueAccessor) {
        var duration = ko.utils.unwrapObservable(valueAccessor());
        $(element).hide().flash(duration);
    }
};

并像这样使用它:<li data-bind="flash: 500"></li>或使用可用于控制持续时间的可观察对象:<li data-bind="flash: selectedDuration"></li>

这是一个示例:http: //jsfiddle.net/rniemeyer/Exmvh/1/

于 2012-01-18T14:35:34.727 回答