使用jQuery动画表

时间:2012-01-03 09:15:51

标签: javascript jquery jquery-animate fade

我昨天在这里问了一个问题并获得了一些非常好的帮助,但我需要更多或更少的帮助,只是有点不同。

This是我的老话。

所以,你做了这个,我的想法是你可以自定义表格,以你想要的方式看到它。现在可以拖动列来更改顺序,可以按字母顺序或高/低顺序排列。由于我在这里得到了帮助,现在也可以隐藏列。

现在我想让隐藏过程更加顺畅,因为如果不使用动画,很难看到点击后是否隐藏了某些东西。我用.fadeOut(200);现在,但是当淡化完成时,列只是“跳跃”以填补空白,是否有可能以某种方式为此设置动画?

编辑:在考虑了一些之后,我认为我可以循环-1px宽度,直到元素的宽度为1px然后只是隐藏它,但由于某些原因不能工作,表格不响应.width(xxx );或.css('width','xxx');.它确实改变了值,但是td保持相同的宽度。

2 个答案:

答案 0 :(得分:1)

您必须使用jqgrid

或仅用于排序,您可以使用tablesorter,这很容易实现

答案 1 :(得分:1)

这有点像一种解决方法,并且可能有更好的解决方案,但无论如何它仍然存在:

  1. 将不透明度设置为0.0。 Fadeout也是如此,但在完全淡出后它也会设置display:nonedisplay:none导致相邻列跳跃并填补空白。

  2. 动画会让隐藏的div留在那里。现在它不再可见,将其宽度设置为0.这将使相邻的div平滑地占据它的位置。

  3. 宽度为0后,设置display:none

  4. 这是我掀起的一份工作样本。相应地调整动画宽度:http://jsfiddle.net/x7BEv/8/

    魔法是如何发生的:

    $(document).ready(function(){
        $('#button').click(function(){
            $('#upper').animate({opacity:0.0},'slow').animate({height:'0px'},'slow',allDone);
        });
    });
    
    function allDone()
    {
        $('#upper').hide();
    }
    

    我不确定allDone()方法有多重要。你可能会废除它。