Jquery end()如何用于animate()?
我目前正在研究如何链接我的jquery代码。元素需要去掉边框,并设置动画。我的解决方案:将borderWidth设置为零,然后删除该类: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
$(".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课程谢谢!