淘汰赛无法让过渡工作

时间:2012-10-22 03:35:29

标签: jquery json knockout.js

我已经和Knockout合作了几天了。事情进展相对顺利,但我遇到了一个问题。我似乎无法在此处运行动画过渡。理想情况下,我希望能够淡出destroy事件中的奇异元素。我还希望能够在页面转换中为整个表格制作动画。我无法工作,因为元素总是“未定义”。

这是我的foreach bind:

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

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

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

看看this fiddle,让我知道你们的想法。

1 个答案:

答案 0 :(得分:1)

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

所以你需要过滤掉文本节点,只在elem.nodeType == 1表示节点类型是一个元素时才进行隐藏:

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

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

同样是Animated transitions examplehidePlanetElement方法。