2

我已经与 Knockout 合作了几天。事情进展得相对顺利,但我遇到了一个问题。我似乎无法在这里运行动画过渡。理想情况下,我希望能够在破坏事件中淡出奇异元素。我还希望能够在页面转换时为整个表格设置动画。我无法让任何工作,因为该元素始终是“未定义的”。

这是我的 foreach 绑定:

<tbody data-bind='foreach: { data : $root.displayResults(startValue(), endValue()), beforeRemove: hideElement }'>

但是当调用该函数时,我得到一个未定义的 jQuery 错误

self.hideElement = function(elem) {
    $(elem).hide(300)
}

看看这个小提琴,让我知道你们的想法。

4

1 回答 1

1

您应该知道 KO 将beforeRemove根据您的模板多次调用回调:在您的情况下,它将是一个文本节点、tr 和另一个文本节点。

因此,您需要过滤掉文本节点,并且仅elem.nodeType == 1在节点类型为元素时才进行隐藏:

self.hideElement = function(elem) {
    if (elem.nodeType === 1) 
       $(elem).hide(300)
}

这是一个JSFiddle具有有效删除功能的功能,我还添加了一些日志记录以查看beforeRemove调用了多少次。

动画过渡示例hidePlanetElement方法也是如此。

于 2012-10-22T06:35:49.253 回答