JQuery 1.9.1和Knockout fadeOut()出错

时间:2013-11-18 15:18:58

标签: jquery knockout.js

在StackOverflow上找到similar issue,但这对我的情况没有帮助。

我有一个Knockout 3.0(JQuery行为与KO 2.3相同)和Jquery 1.9.1应用程序,我正在尝试fadeOut一个元素,但我一直收到“未捕获的TypeError:无法设置属性'cur'未定义的“。我可以改变小提琴使用JQuery 1.8.3或JQuery 2.0.2,它会起作用。

这是模板/视图代码:

<div id="cart">
<ul data-bind="foreach: { data: myItems, beforeRemove: fadeIt}">
    <li><span data-bind="text: $data"></span>  <a href="#" data-bind="click: $root.deleteItem">X</a>

    </li>
</ul>
<button data-bind="click: addItem">Add</button>

这是Knockout ViewModel:

function CartViewModel() {
var self = this;

self.myItems = ko.observableArray(['A', 'B', 'C']);

self.fadeIt = function (element, index, data) {
    $(element).fadeOut();
};

self.addItem = function () {
    self.myItems.push('New item');
};

self.deleteItem = function (item) {
    self.myItems.remove(item);
};

}

var vm = new CartViewModel();
ko.applyBindings(vm, document.getElementById("cart"));

我创建了一个JSFIDDLE来证明这种行为。

寻找一些有创意的解决方法

我已尝试过的一些事情:

  • 在* $ el.css上使用JQuery动画({opacity:1,display:'block'})。animate({opacity:0}),失败并出现同样的错误

  • 我尝试使用$ .delay()来查看是否可以将fadeOut()推迟到未来的框架

感谢您的任何建议。理想情况下,我们不会切换到JQuery 2.0 +

1 个答案:

答案 0 :(得分:0)

好吧所以看起来元素不是你真正认为的那样,我看$(元素)它不是li元素,在你的情况下是一个问题

$(element).next().fadeOut();

似乎有效,但我打赌你需要一种更具体的方式来达到这个目标

更新了小提琴http://jsfiddle.net/qTvs9/1/