使用jquery,如何动画添加新的列表项到列表?

时间:2009-12-05 07:32:59

标签: javascript jquery

我有一个简单的javascript函数,允许我将项添加到列表中。请注意,我使用JQuery ...

function prependListItem(listName, listItemHTML)
{
    //Shift down list items...
    $("#" + listName + " li:first").slideDown("slow");

    //Add new item to list...
    $(listItemHTML).prependTo("#" + listName)       
}

'listName'只是<ul>,只有<li>个。

前置工作正常,但我无法使slideDown效果起作用。我希望列表项向下滑动,然后新项目显示在顶部。任何想法如何实现这一目标?我还是JQuery的新手......

3 个答案:

答案 0 :(得分:23)

如果您希望添加它并同时向下滑动,请执行以下操作:

function prependListItem(listName, listItemHTML){
    $(listItemHTML).hide().prependTo('#' + listName).slideDown('slow');
}

要真正做到你所描述的(向下滑动,然后淡入),你需要这样的东西:

function prependListItem(listName, listItemHTML){
    $(listItemHTML)
        .hide()
        .css('opacity',0.0)
        .prependTo('#' + listName)
        .slideDown('slow')
        .animate({opacity: 1.0})
}

答案 1 :(得分:3)

尝试:

$("<li>new item</li>").hide().prependTo("#" + listName).slideDown("slow");

换句话说:

  • 创建新的列表项;
  • 隐藏它(因此在添加到列表时不可见);
  • 将其添加到列表顶部;然后
  • 向下滑动。其他项目将下滑。

答案 2 :(得分:1)

http://jsfiddle.net/eCpEL/13/

这应该有帮助

使用关键帧动画

.comefromtop {
    animation: comefromtop 0.5s;
}
.pushdown {
    animation: pushdown 0.5s;
}

@-webkit-keyframes comefromtop {
  0%   { opacity:0; -webkit-transform: translateY(-100%); }
  100% { opacity:1; -webkit-transform: translateY(0px);   }
}

@-webkit-keyframes pushdown {
  0%   { /*opacity:0;*/ -webkit-transform: translateY(-10%); }
  100% { /*opacity:1;*/ -webkit-transform: translateY(0);   }
}

使用基本的javascript

function add() {
    var val = $('#input').val();
    var item = $('<li></li>').addClass('comefromtop').attr('id',val).text(val);         $('#Trees').prepend(item).addClass('pushdown');
    setTimeout(function () {
        $('#Trees').removeClass('pushdown');
    }, 600);
}
$('.add').click(add);
$('#input').on('keypress',function (e) {
    if (e.keyCode === 13) {
        add();
    }
});

你可以实现敬虔