0

那里有很多演示说明如何淡出表格行,并且为了 IE,我们必须淡出表格单元格,然后在动画完成后删除行。例如这个问题:fadeout and remove table row

我的这项技术效果很好。现在我想在行被淡出并删除后用 ajax 调用刷新我的表。如果我将此 ajax 加载放在 fadeOut 完成回调中,它将为我的表格中的每一列触发一次(因为我正在淡出表格单元格,而不是行)。这会导致一堆 ajax 请求堆积起来。(工作正常,胸围是浪费和不好的做法。)

所以我想淡出并删除一个表格行,然后只触发一个事件/调用一个函数来更新网格。jQuery 中的最佳实践是什么?我需要为所有表格单元格设置动画,但只有一个动画完成回调。

.remove() 上没有回调,所以我应该使用 .hide() 之类的其他效果并将 .remove() 与 ajax 一起放在其回调中吗?这将如何与跨浏览器兼容性公平?在旧版本的 IE 中,对表格行的影响是否存在任何已知问题?


注意:并不是说它有什么不同,但我碰巧正在使用构建在 jQuery UI 之上的 wijmo 网格小部件。但它只是标记中的普通 html 表。淡出/删除工作正常。

4

1 回答 1

0

您面临的问题是fadeOut每个匹配元素(所有 s)的回调执行td,而不是整个集合。您需要做的是在最后一个元素淡出之后放置 remove 和 ajax。您可以在下面找到您引用的问题中的代码已更新以满足此需求(警报和删除只会执行一次):

// don't use live, switch to delegate
$('#tbl').delegate('td', 'click', function() {  
    var tr = $(this).parents('tr:first'),
        tds = tr.find('td'),
        l = tds.length;

    tds.fadeOut('fast', function(){ 
        if (! --l) {
            tr.remove();                    
            alert('ajax');
        }
    });    

    return false;
});

这是它的一个小例子:http: //jsfiddle.net/a76A6/2/

于 2011-11-25T20:48:14.757 回答