Jquery end()如何用于animate()?

Jquery end()如何用于animate()?,jquery,jquery-animate,chaining,jquery-chaining,Jquery,Jquery Animate,Chaining,Jquery Chaining,我目前正在研究如何链接我的jquery代码。元素需要去掉边框,并设置动画。我的解决方案:将borderWidth设置为零,然后删除该类: $(".imgWrap", element).animate({ borderWidth: "0px" }).end() .removeClass("border"); animate()应该返回包装好的元素,但据我从jQuery API了解,end()将使对象返回到调用.find之前的状态 .find在示例的上下文中,因此我冒昧地将其替换为.ani

我目前正在研究如何链接我的jquery代码。元素需要去掉边框,并设置动画。我的解决方案:将borderWidth设置为零,然后删除该类:

$(".imgWrap", element).animate({ borderWidth: "0px" }).end()
    .removeClass("border");
animate()应该返回包装好的元素,但据我从jQuery API了解,
end()
将使对象返回到调用
.find
之前的状态

.find
在示例的上下文中,因此我冒昧地将其替换为
.animate
。唉,这对我不起作用。
.end()
的结果是
.animate()
的结果

因为您(现在)没有
find
过滤器(或任何其他过滤器),
end
没有要撤消的内容。它与
动画制作
无关

如果首先选择一个容器,然后在其中查找
imgWrap
,则可以撤消筛选器:

$('.container').find('.imgWrap').animate({borderWidth:'0px')).end()

上面将返回匹配
$('.container')
的元素,因为
find
end
撤消

可能令人困惑的是,如果您在
动画制作
之后立即链接
removeClass
removeClass
将不会等待
动画制作
完成,因此看起来没有动画发生。您需要删除
动画
完成
功能中的类:

$(".imgWrap", element).animate({ borderWidth: "0px" }, function(){
    $(this).removeClass('border');
});
.end()
将jQuery对象返回到
之前的状态。find()

i、 e.如果我这样做:

$('div').find('.class').end()
那么链接后剩下的是
$('div')
的结果。它不会改变元素本身的任何内容

大多数jQuery方法返回的jQuery对象不仅包含当前匹配的元素,还包含以前链接调用的结果堆栈

因此,当您调用
.find()
时,上一个列表仍然存储在该堆栈上。调用
.end()
只会从堆栈中删除最后一项

要解决实际问题(即在动画完成后更改样式),您需要将该更改放入到
.animate()
本身中

$(".imgWrap", element)
   .animate({ borderWidth: "0px" }, function() {
       $(this).removeClass("border");
   });

再加上adam几乎相同的答案,另一个jquery课程谢谢!