2017-10-08 111 views
0

我有以下代碼。

以下代碼在點擊時效果不錯,但不在$ .each內。爲什麼?

$($('.slides').children()[0]).css({'opacity':1,'z-index':6}); 

$(document).ready(function(){ 
 

 
$(document).on('click', '.one', function() { 
 
$('.slides').children().css({'opacity':0,'z-index':0}); 
 
       $($('.slides').children()[0]).css({'opacity':1,'z-index':6}); 
 
}); 
 

 
$(document).on('click', '.two', function() { 
 
$('.slides').children().css({'opacity':0,'z-index':0}); 
 
       $($('.slides').children()[1]).css({'opacity':1,'z-index':6}); 
 
}); 
 

 
$(document).on('click', '.three', function() { 
 
$('.slides').children().css({'opacity':0,'z-index':0}); 
 
       $($('.slides').children()[2]).css({'opacity':1,'z-index':6}); 
 
}); 
 

 
$(document).on('click', '.left-btn', function() { 
 
     var i = 0; 
 

 
     $.each($('.slides > li'),function(e,v){ 
 
      if($(v).css('opacity')>0){ 
 
       $('.slides').children().css({'opacity':0,'z-index':0}); 
 
       $($('.slides').children()[i]).css({'opacity':1,'z-index':6}); 
 
       
 
       console.log("SSSSSSSSSSS"+i); 
 
      } 
 
      i++; 
 
     }); 
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="btn left-btn"> 
 
left 
 
</button> 
 

 
<button class="btn one"> 
 
one 
 
</button> 
 
<button class="btn two"> 
 
two 
 
</button> 
 
<button class="btn three"> 
 
three 
 
</button> 
 
<ul class="slides"> 
 
    <li>first</li> 
 
    <li>second</li> 
 
    <li>third</li> 
 
    <li>fourth</li> 
 
</ul> 
 
        

+0

你想,當你點擊'Left'按鈕做什麼? –

+0

如果第三個可見則顯示第二個,如果第二個則顯示第一個。 –

回答

1

您可以左鍵代碼更改到以下。當您點擊left按鈕時,會顯示之前的li元素。我寫了if語句來檢查當前的li是否是第一個元素,如果是的話我就不做任何事情。

$(document).on('click', '.left-btn', function() { 
    $.each($('.slides > li'), function (e, v) { 
     if ($(v).css('opacity') > 0) { 
      if ($(v).index() != 0) { 
       $('.slides').children().css({ 'opacity': 0, 'z-index': 0 }); 
       //$(v).prev().css({ 'opacity': 1, 'z-index': 6 }); 
       $($('.slides').children()[e-1]).css({'opacity':1,'z-index':6}); 
      } 
     } 
    }); 
}); 

$(document).on('click', '.right-btn', function() { 
    var flag = false; 
    $.each($('.slides > li'), function (e, v) { 
     if ($(v).css('opacity') > 0) { 
      if ($(v).index() != $('.slides > li').length - 1 && !flag) { 
       $('.slides').children().css({ 'opacity': 0, 'z-index': 0 }); 
       $($('.slides').children()[e + 1]).css({ 'opacity': 1, 'z-index': 6 }); 
       //$(v).next().css({ 'opacity': 1, 'z-index': 6 }); 
       flag = true; 
      } 
     } 
    }); 
}); 

$(document).on('click', '.one', function() { 
 
\t $('.slides').children().css({ 'opacity': 0, 'z-index': 0 }); 
 
\t $($('.slides').children()[0]).css({ 'opacity': 1, 'z-index': 6 }); 
 
}); 
 

 
$(document).on('click', '.two', function() { 
 
\t $('.slides').children().css({ 'opacity': 0, 'z-index': 0 }); 
 
\t $($('.slides').children()[1]).css({ 'opacity': 1, 'z-index': 6 }); 
 
}); 
 

 
$(document).on('click', '.three', function() { 
 
\t $('.slides').children().css({ 'opacity': 0, 'z-index': 0 }); 
 
\t $($('.slides').children()[2]).css({ 'opacity': 1, 'z-index': 6 }); 
 
}); 
 

 
$(document).on('click', '.left-btn', function() { 
 
\t $.each($('.slides > li'), function (e, v) { 
 
\t \t if ($(v).css('opacity') > 0) { 
 
\t \t \t if ($(v).index() != 0) { 
 
\t \t \t \t $('.slides').children().css({ 'opacity': 0, 'z-index': 0 }); 
 
\t \t \t \t //$(v).prev().css({ 'opacity': 1, 'z-index': 6 }); 
 
     $($('.slides').children()[e-1]).css({'opacity':1,'z-index':6}); 
 
\t \t \t } 
 
\t \t } 
 
\t }); 
 
}); 
 

 
$(document).on('click', '.right-btn', function() { 
 
\t var flag = false; 
 
\t $.each($('.slides > li'), function (e, v) { 
 
\t \t if ($(v).css('opacity') > 0) { 
 
\t \t \t if ($(v).index() != $('.slides > li').length - 1 && !flag) { 
 
\t \t \t \t $('.slides').children().css({ 'opacity': 0, 'z-index': 0 }); 
 
\t \t \t \t $($('.slides').children()[e + 1]).css({ 'opacity': 1, 'z-index': 6 }); 
 
\t \t \t \t //$(v).next().css({ 'opacity': 1, 'z-index': 6 }); 
 
\t \t \t \t flag = true; 
 
\t \t \t } 
 
\t \t } 
 
\t }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<button class="btn left-btn"> 
 
\t left 
 
</button> 
 
<button class="btn one"> 
 
\t one 
 
</button> 
 
<button class="btn two"> 
 
\t two 
 
</button> 
 
<button class="btn three"> 
 
\t three 
 
</button> 
 
<button class="btn right-btn"> 
 
    right 
 
</button> 
 
<ul class="slides"> 
 
\t <li>first</li> 
 
\t <li>second</li> 
 
\t <li>third</li> 
 
\t <li>fourth</li> 
 
</ul>

+0

但是爲什麼我的代碼不工作?作爲同樣的.css()函數工作良好的外部$ .each –

+0

我已經更新了我的代碼片段,它的工作原理,而不是使用單獨的變量'我',使用可以使用'E'維護索引。然後'e-1'獲得前一個元素的句柄。您可以驗證我的更新代碼。你可以使用jQuery的'prev'方法縮短你的代碼。 –

+0

右鍵怎麼樣? –