在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 +
答案 0 :(得分:0)
好吧所以看起来元素不是你真正认为的那样,我看$(元素)它不是li元素,在你的情况下是一个问题
$(element).next().fadeOut();
似乎有效,但我打赌你需要一种更具体的方式来达到这个目标