仅在最后一项完成后运行jQuery slideDown完成功能[重复]
Posted
技术标签:
【中文标题】仅在最后一项完成后运行jQuery slideDown完成功能[重复]【英文标题】:Run jQuery slideDown complete function only after last item has completed [duplicate] 【发布时间】:2013-07-16 13:26:40 【问题描述】:我了解您可以将一个函数传递给 slideUp/slideDown,该函数将在转换完成后运行:
$('li').slideUp(
complete: function()
alert('done');
);
使用此 html 会显示 3 次警报。
<ul>
<li>[content here]</li>
<li>[content here]</li>
<li>[content here]</li>
</ul>
有没有办法让complete
函数只触发一次,当最后一个 列表项完成上滑时? (fiddle)
【问题讨论】:
你不能把 UL 往上滑吗? 我相信你必须定位li:last
技术上我当然可以,但效果完全不同@AndréPena
看看这个问题:***.com/questions/8793246/…
他们不会同时滑上去吗?
【参考方案1】:
您可以“重做”您的选择器并检查 this
是否是最后一个:
$('li').slideUp(
complete: function()
if($('li:last').is(this))
alert('done');
);
小提琴:http://jsfiddle.net/5NQsU/
缓存你的选择器会更好:
var $li = $('li');
$li.slideUp(
complete: function()
if($li.last().is(this))
alert('done');
);
【讨论】:
.is(this)
...该死的,我试图记住这一点,+1
太棒了,谢谢,只要系统允许我就会接受。我想这与:first
一样有效,对吧?既然他们都同时完成?我想我什至可以使用isCompleted
标志或现在我想到的东西......
@WesleyMurch 它应该也能正常工作:)【参考方案2】:
http://jsfiddle.net/Ultimate/KrW5a/
var total = $('ul').size();
var i = 1;
$('li').slideUp(
complete: function ()
if (i === total) alert('done');
i += 1;
);
【讨论】:
Karl's 更好,忽略这个。以上是关于仅在最后一项完成后运行jQuery slideDown完成功能[重复]的主要内容,如果未能解决你的问题,请参考以下文章
JQuery:如何仅在完成调整大小后才调用 RESIZE 事件?
ListView 显示正确,但仅在 onclick 时获取最后一项。 ListView 上的搜索功能无法正常工作