在动画函数中使用$(this)

时间:2014-04-01 18:03:15

标签: jquery jquery-selectors jquery-animate

$('.balloon').animate({top:30} ,1000);
$('.balloon').animate({top:10} ,1000);

我可以成功完成上述工作。 Plz看看complete code and execution at fiddle

但我想在上面使用通用顶级位置,如下所示。但是当我这样做时,我会给出错误TypeError: a.ownerDocument is undefined

$('.balloon').animate({top:$(this).css('top')+20} ,1000);
$('.balloon').animate({top:$(this).css('top')-20} ,1000);

2 个答案:

答案 0 :(得分:1)

您的代码可以简化:

$(document).ready(function() {
    (function foo () {
        $('.balloon').stop(true).animate({top: "+=30"}, 1000, function () {
            $(this).stop(true).animate({top: "-=30"}, 1000, foo);
        });
    })();
});

您可以使用+=3030px添加到顶部位置。与-30px相同。

JSFIDDLE

答案 1 :(得分:0)

您需要使用$.each jquery函数

这是示例http://fiddle.jshell.net/cRs9f/1/

$(document).ready(function()
{
    var downs = true;
    setInterval (function()
    {

        $('.balloon').each(function(){

          if(downs)
          {

               $(this).animate({top:30} ,1000);
               $(this).animate({top:$(this).css('top')+20} ,1000);
                downs =false;

          }else
          {
            $(this).animate({top:10} ,1000);
            $(this).animate({top:$(this).css('top')-20} ,1000);
            downs =true;
          }


        });

    },1000);
});