これは私の基本的なjqueryイメージスライダのコードです。問題は、1つのページに複数のスライダがあり、各スライダの画像数が違うことです。各スライダーには、.portfolio-img-containerクラスと各画像.portfolio-imgがあります。次のように
基本的なHTMLの設定は次のとおりです。
<div class="portfolio-item"><div class="portfolio-img-container"><img class="portfolio-img"><img class="portfolio-img"></div></div>
<div class="portfolio-item"><div class="portfolio-img-container"><img class="portfolio-img"><img class="portfolio-img"></div></div>
とJavaScript:
$.each($('.portfolio-img-container'), function(){
var currentIndex = 0,
images = $(this).children('.portfolio-img'),
imageAmt = images.length;
function cycleImages() {
var image = $(this).children('.portfolio-img').eq(currentIndex);
images.hide();
image.css('display','block');
}
images.click(function() {
currentIndex += 1;
if (currentIndex > imageAmt -1) {
currentIndex = 0;
}
cycleImages();
});
});
は私の問題は、(機能cycleImagesで起動します)。私は任意の画像をクリックしてこの関数を呼び出しています。しかし、それは動作していません:画像は隠されますが、 "表示:ブロック"はどの画像にも適用されません。私は私の問題が$(これ)であるdevtoolsを使って推論しました。可変イメージは未定義のままです。 $(this)を$( 'portfolio-img')に変更すると、すべての.portfolio-img-containerのすべての.portfolio-imgが選択されます。誰も現在の.portfolio-img-containerの中のportfolio-imgsだけを選択する方法を提案できますか?
ありがとうございます!
あなたが使用して、関連するコンテキストを設定することができます: 'cycleImages.call(この); 'と' cycleImages() 'メソッドの中で' currentIndex'に関するロジックを設定し、それをバインドするだけです: 'images.click(cycleImages);' –