我有以下jQuery,
function animTweets($tweets) {
$tweets.each(function () {
var $tweet = $(this);
$('#twitterTile').queue('myQueue', function (next) {
$tweet.animate({top: 0, height: 'show'},
{duration: 300,
queue: false,
complete: next
});
}).delay(1E10, 'myQueue');
});
}
遍历列表($tweets)中包含的项。
如何创建if
语句,使最后一项具有不同的动画?
$tweets.each(function (index) {
if(index == $tweets.length-1) {
//special behavior
}
});
您可以使用.length
获得tweet的总数,然后使用.each()
暴露的index
检查它是否当前的index
是最后一个:
function animTweets($tweets) {
var total = $tweets.length;
$tweets.each(function (index, obj) {
var $tweet = $(this);
if ((index + 1) == total) {
//this is the last one
} else {
$('#twitterTile').queue('myQueue', function (next) {
$tweet.animate({top: 0, height: 'show'},
{duration: 300,
queue: false,
complete: next
});
}).delay(1E10, 'myQueue');
}
});
}
Docs for .each()
: http://api.jquery.com/each
function animTweets($tweets) {
var len = $tweets.length;
var count = 1;
$tweets.each(function () {
var $tweet = $(this);
if(len == count ){
//different anim
}else{
$('#twitterTile').queue('myQueue', function (next) {
$tweet.animate({top: 0, height: 'show'},
{duration: 300,
queue: false,
complete: next
});
}).delay(1E10, 'myQueue');
}
count++;
});
}
如何使用.slice()
<一口>[医生]一口>和.last()
<一口>[医生]一口>:
$tweets.slice(0, -1).each(...);
var $lastTweet = $tweets.last();
// do something with the last tweet.
有时我们忘记了.each()
并不总是比老式的for
循环好,因为我们失去了对迭代的控制。假设animTweets的参数是jQuery对象,您可以像这样使用for
循环:
function animTweets($tweets) {
var $tweet;
for (var i = 0, len = $tweets.length - 1; i < len; i++) {
$tweet = $tweets.eq(i);
$('#twitterTile').queue('myQueue', function (next) {
$tweet.animate({top: 0, height: 'show'},
{duration: 300,
queue: false,
complete: next
});
}).delay(1E10, 'myQueue');
}
// now process the last one separately
tweet$ = $tweets.eq(-1);
// ...
}