私は、2つの方向ボタンだけでプリロードされた画像のスライダーを作成しようとしました。私が望むやり方でアニメーションを手に入れ、コントロールのアイデアはチュートリアルからのものでした。jQueryスライダ - setTimeoutクロスブラウザのグリッチ?
(チュートリアル:How to Make Auto-Advancing Slideshows)
だから、私は私のニーズにautoadvanceソリューションを適応し、[OK]を作業のすべてを得ました。しかし、FF(8.0)で実行しようとしたときに少し問題がありました。ボタンをクリックすると、IE(8.0)に問題がない(他のブラウザではテストされていない)間に、プリセットされた3秒後にアニメーションが続く部分を除いて、すべてのことが行われます。
私は間違っていますか?あなたのtimeout
変数が間違ったスコープ内にあるように見える、一見
var traker=0;
$(document).ready(function(){
var numOfImages=4;
var timeOut = null;
(function autoAdvance(){
$('#fwd').trigger('click',[true]);
timeOut = setTimeout(autoAdvance,3000);
})();
function preload(imgIndex,numImages){
$("#imgholder1").css('background-image','url("'+imgIndex+'.jpg")');
$("#imgholder2").hide(0);
imgIndex < numImages ? imgIndex++ : imgIndex=1
$("#imgholder2").css('background-image','url("'+imgIndex+'.jpg")');
traker=imgIndex;
}
preload(1,numOfImages);
function animate(imgIndex,numImages){
$("#imgholder2").fadeIn("slow",function(){
preload(imgIndex,numImages);
});
}
$("#fwd").bind("click",function(e,simulated){
animate(traker,numOfImages);
if(!simulated){
clearTimeout(timeOut);
timeOut = setTimeout(autoAdvance,3000);
}
});
$("#bwd").bind("click",function(){
var temp=traker-2;
if(temp == 0){temp=numOfImages;}
if(temp == -1){temp=numOfImages-1;}
$("#imgholder2").css('background-image','url("'+temp+'.jpg")');
animate(temp,numOfImages);
clearTimeout(timeOut);
timeOut = setTimeout(autoAdvance,3000);
});
});
提案はありません。とにかく試してみよう。私はまた、混乱を避けるために名前空間を使う方が良いと思っています。悲しいことに、ここには何の助けもありません。 –
私はあなたが自動クリックを検出する方法を疑うかもしれません - 私はグローバルフラグ(bAutoClick = true)を設定して、このようなことをするときに違った扱いをしました。あなたは 'シミュレート'を設定している - ちょっと、それかもしれない。 'Click'イベントで' simulated'を 'false'に戻してください。恐らくFFはそれをより高い範囲にしています。 –
同じ、目に見える効果は全くありません。 –