希望您能提供帮助,此代码无效。它正在选择下一个图像,但是如果它在最后一个图像上并且没有“下一个图像”,那么我想选择“li”中的第一个图像。我添加了一个if条件:if(nextLi.value!=='')...但这似乎不起作用。
function nextImg(){
$('#background').find('img').animate({'opacity': 0}, 500, function (){
var nextLi = $('.sel').parent().parent().next('li').find('a');
if (nextLi.value !=='') {
var nextLiA = nextLi.attr('rel');
$('#background').find('img').attr({'src':nextLiA});
$('.sel').appendTo(nextLi);
} else {
var nextLi = $('.sel').parent().parent().first('li').find('a');
var nextLiA = nextLi.attr('rel');
$('#background').find('img').attr({'src':nextLiA});
$('.sel').appendTo(nextLi);
}
});
}
答案 0 :(得分:0)
您应该使用length
代替,执行:
if (!nextLi.length){
//do stuff
}
如果选择为空nextLi.length
将返回0(即false
),那么您添加!
答案 1 :(得分:0)
nextLi
是一个jQuery对象。如果你想看看它是否包含任何元素,即,如果有什么东西与你使用的选择器匹配,那么只需检查它的.length
属性:
if (nextLi.length > 0 ) {
另请注意,if块中的三行与else的最后三行相同,因此您可以按如下方式简化代码:
if (nextLi.length === 0) {
nextLi = $('.sel').parent().parent().first('li').find('a');
}
$('#background').find('img').attr({'src': nextLi.attr('rel') });
$('.sel').appendTo(nextLi);
(我已完全删除nextLia
变量,因为它仅用于一个地方 - 您可以在设置nextLi.attr('rel')
属性时直接使用src
。)
答案 2 :(得分:0)
试试这个。它检查li
的大小,如果没有找到任何内容,则选择第一个。
function nextImg(){
$('#background').find('img').animate({'opacity': 0}, 500, function (){
var li = $('.sel').parent().parent().next('li').find('a');
if(li.length == 0) {
//if there is not last item
li = $('.sel').parent().parent().first('li').find('a'); //get the first item
}
var liA = li.attr('rel');
$('#background').find('img').attr({'src':liA});
$('.sel').appendTo(li);
});
}