2012-03-06 88 views
0

希望你能帮助,这段代码不工作。它正在选择下一张图像,但如果它位于最后一张图像上,并且没有“下一张图像”,那么我想选择“李”中的第一张图像。我已经添加了if条件:if(nextLi.value!=='')...但是这似乎不起作用。。首先('li)选择列表中的第一项不起作用

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

你能张贴你的HTML标记吗 – Curt 2012-03-06 11:56:46

回答

0

您应该使用length代替,这样做:

if (!nextLi.length){ 
//do stuff 
} 

如果选择为空nextLi.length将返回0(即false),所以你添加一个!

0

nextLi是一个jQuery对象。如果你想看看它是否包含任何元素,即如果任何匹配的选择器(一个或多个),那么你使用的只是检查其.length属性:

if (nextLi.length > 0) { 

还要注意的是三条线内,如果块是相同的作为最后三行的东西,这样你就可以简化代码如下:

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属性。)

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); 

    }); 
} 
相关问题