0

シンプルなカルーセル画像ギャラリーを作っています。現在、2 つの画像があり、最後の画像の後にギャラリーを最初の画像にループバックさせたいのですが、この機能を機能させる方法がわかりません。さらに、前と次のボタンが何らかの理由で機能しなくなりました。私の jq/js スキルは不足しており、これを機能させるための助けをいただければ幸いです。これが私のコードの jsfiddle です [1]: http://jsfiddle.net/jsavage/kGAxa/39/

$(document).ready(function () {
    if (jQuery("#gallery").length) {
        // declare variables
        var totalImages = jQuery("#gallery > li").length,
            imageWidth = jQuery("#gallery > li:first").outerWidth(true),
            totalWidth = imageWidth * totalImages,
            visibleImages = Math.round(jQuery("#gallery-wrapper").width() / imageWidth),
            visibleWidth = visibleImages * imageWidth,
            stopPosition = (visibleWidth - totalWidth);

        jQuery("#gallery").width(totalWidth);

        jQuery("#gallery-prev").click(function () {
            if (jQuery("#gallery").position().left < 0 && !jQuery("#gallery").is(":animated")) {
                jQuery("#gallery").animate({
                    left: "+=" + imageWidth + "px"
                });
            }
            return false;
        });

        jQuery("#gallery-next").click(function () {
            if (jQuery("#gallery").position().left > stopPosition && !jQuery("#gallery").is(":animated")) {
                jQuery("#gallery").animate({
                    left: "-=" + imageWidth + "px"
                });
            }
            return false;
        });
    }

});
4

1 に答える 1

0

あなたのフィドルをテストしました.javascriptはうまくいきます.cssだけに次の属性がありません:

#gallery-wrapper {
    position:relative;
}

#gallery {
    position:absolute;
}

また、コードは内部で実行する必要もあります

$(window).load();

$(document).ready();の代わりに イベント ハンドラーが正しく動作するようにします。

http://jsfiddle.net/kGAxa/42/

于 2013-05-19T05:54:46.193 に答える