2012-03-06 2 views
0

Надеюсь, что вы сможете помочь, этот код не работает. Он выбирает следующее изображение в порядке, но если оно находится на последнем изображении и нет «следующего изображения», тогда я хочу выбрать первое изображение в «li». Я добавил условие if: if (nextLi.value! == '') ... но это, похоже, не работает..first ('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

ответ

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

    }); 
}