2016-03-24 3 views
0

I作成した自動IDを生成し、このような生成されたIDのjQueryスライダを動作させるには?

GALLARY項目-0、ギャラリー項目1、としてギャラリーアイテム1

などPHP有します。 jQueryを設定して各IDのスライダーを開始する方法。 ここに書いたコードはありますが、最初のIDに対してのみ動作します。それだけでsetTimeoutのように、一度発生しますので

var i = 0; 
sleepTime = setInterval(function() { 
    var id = $(this).attr("id");   
    $('#gallery-item-'+i).ionImageSlider({ 
     slideWidth: 150, 
     minSlides: 2, 
     maxSlides: 10, 
     moveSlides: 1, 
     slideMargin: 50, 
     pager: false 
    }); 
    i++; 
    clearInterval(sleepTime); 
}, 3000); 
}); 
+0

最後の '});'は一致しません。それはコピーと貼り付けによるエラーですか? – empiric

+0

私はionImageSliderがどのように動作しているのかわかりませんが、シルダをインスタンス化するために[属性セレクタ](https://api.jquery.com/attribute-starts-with-selector/) ionImageSlider() ' – empiric

+0

インターバル内でsetInterval/clearIntervalではなく' setTimeout'を試してください –

答えて

0

は、あなたがそれを呼び出しているclearInterval(sleepTime)を呼び出さないでください。

IDがgallery-itemで始まるすべてのアイテムの数を持つ変数を作成し、カウントに達するとハンドラでclearIntervalを呼び出します。

var i = 0, 
total = $('[id^="gallery-item-"]').length, 
sleepTime = setInterval(function() { 
    $('#gallery-item-'+ i).ionImageSlider({ 
     slideWidth: 150, 
     minSlides: 2, 
     maxSlides: 10, 
     moveSlides: 1, 
     slideMargin: 50, 
     pager: false 
    }); 
    i++; 
    if (i == total - 1) { 
     clearInterval(sleepTime); 
    }  
}, 3000); 
0

タイマーを使用する予定は明確ではありません.3秒後にすべてを表示するか、3秒後にすべてを表示します。タイマーなし

for (var i=0;i<2;++i) { 
    $('#gallery-item-'+i).ionImageSlider({ 
     slideWidth: 150, 
     minSlides: 2, 
     maxSlides: 10, 
     moveSlides: 1, 
     slideMargin: 50, 
     pager: false 
    }); 
} 

単一のタイマー付:mutlipleタイマー付き

setTimeout(function() { 
    ... same code as above ... 
}, 3000); 

for (var i=0;i<2;++i) { 
    var loopI = i; 
    setTimeout(function() { 
     $('#gallery-item-'+loopI).ionImageSlider({ 
      slideWidth: 150, 
      minSlides: 2, 
      maxSlides: 10, 
      moveSlides: 1, 
      slideMargin: 50, 
      pager: false 
     }); 
    }, 3000 + (i+1)); 
} 

あなたは最高のアイテムを取得することができます(コードで2上記の)あなたのPHPから、またはコメントのようにセレクタを使用します。

+0

ありがとうございます。最初のコードは大いに役立ちます。今ではID-sと同じスライダを使用していますが、別のID-s(div ID-s)の画像は最初のスライド、つまり#gallery-item-0に表示されます。 img構造体を生成する方法を以下に示します:$( '。gallery-item img')。それぞれ(function(){ var src = $(this).attr( "src"); var bigSrc = src.replace "-150x150"、 ""); $(this).wrap( ""); }); –

+0

問題はおそらくクロージャによるものです。より詳細な情報を確認してください。ここで3番目のコードはそれを処理します。おそらくあなたの私のvarはグローバルです。 –

+0

p.s. divにはクラス名も.gallery-item –