おはよう諸君。私が作成している単純な jQuery ギャラリーに問題があります。これにより、ユーザーはいくつかのボタンを使用して画像のコレクションを循環し、同時にこれらの画像をタイマーで回転させることができます。私の問題は、ユーザーがボタンを複数回クリックしてフェードインアニメーションをキューに入れ、何度も繰り返すことができることです。たとえば、ユーザーがボタンを 5 回クリックする > 同じ画像が 5 回フェードイン/フェードアウトする > ギャラリーが次の画像に移動します。
私は使用してみました:
$('#homeGalleryImage li a').unbind('click');
クリック イベントが発生してから再バインドした後:
$('#homeGalleryImage li a').bind('click');
完了した後、ボタンを1回押した後にクリックイベントを削除するだけで、再バインドすることはありませんか?
また、次の方法でボタンを無効にしようとしました:
$('#homeGalleryImage li a').attr('disabled', true);
無駄に... ?
画像のトランジション中にボタンをクリックすると、不透明度が下がったかのように次の画像が「ぼやけて」表示されるという二次的な問題がありますか? 非常に奇妙です...ボタンクリックのコードは次のとおりです。
var i = 1;
var timerVal = 3000;
$(function () {
$("#homeGalleryControls li a").click(function () {
var image = $(this).data('image');
$('#galleryImage').fadeOut(0, function () {
$('#galleryImage').attr("src", image);
});
$('#galleryImage').fadeIn('slow');
$('.galleryButton').attr("src", "/Content/Images/Design/btn_default.gif");
$(this).find('img').attr("src", "/Content/Images/Design/btn_checked.gif");
i = $(this).data('index') + 1;
if (i == 4) {
i = 0;
}
timerVal = 0;
});
});
タイマーで画像を循環するコードは次のとおりです。
//Cycle through gallery images on a timer
window.setInterval(swapImage, timerVal);
function swapImage() {
$('#galleryImage').fadeOut(0, function () {
var imgArray = ["/Content/Images/Design/gallery placeholder.jpg", "/Content/Images/Design/1.jpg", "/Content/Images/Design/2.jpg", "/Content/Images/Design/3.jpg"];
var image = imgArray[i];
i++;
if (i == 4) {
i = 0;
}
$('#galleryImage').attr("src", image);
$('#galleryImage').fadeIn('slow');
});
var currentButton = $('#homeGalleryControls li a img').get(i - 1);
$('.galleryButton').attr("src", "/Content/Images/Design/btn_default.gif");
$(currentButton).attr("src", "/Content/Images/Design/btn_checked.gif");
}
プラグインを使用する方が良いアイデアかもしれませんが、私は jQuery に非常に慣れていないため、既製のコードを使用するのではなく、何かを学びたいと考えています。
どんな助けでも大歓迎です。
ありがとうございました