在页面加载时滚动到给定的jCarousel幻灯片

Jam*_*ica 1 hash jquery history custom-controls jcarousel

Hello stackoverflow贡献者!我有这个脚本通过浏览器URL的哈希获取我的jCarousel的起始位置.像text.html#2这样的东西.

我想要实现的是让jCarousel滚动到页面加载时的给定位置.但是,我的代码似乎只有在我将其绑定到点击时才有效 - 它不响应页面加载请求.

初始化jCarousel

jQuery('#body_list').jcarousel({
        scroll: 1,
        initCallback: bodylist_initCallback
});
Run Code Online (Sandbox Code Playgroud)

回调函数

function bodylist_initCallback(carousel) {
        $(window).load(function () {
            if(window.location.hash) {
                var hash = window.location.hash.slice(1); 
                carousel.scroll(jQuery.jcarousel.intval(hash));
            }
        });
});
Run Code Online (Sandbox Code Playgroud)

替代滚动调用 除Safari中外,以下行有效

if(window.location.hash) {
        var hash = window.location.hash.slice(1); 
        jQuery('#body_list').jcarousel('scroll', hash);
}
Run Code Online (Sandbox Code Playgroud)

And*_*ker 5

您可以start在初始化jCarousel时设置该选项:

var hash = 1; // Default start index if none is specified in URL
if (window.location.hash) {
    hash = parseInt(window.location.hash.slice(1));
}
jQuery('#mycarousel').jcarousel({
    start: hash,
    scroll: 1
});
Run Code Online (Sandbox Code Playgroud)

更新

如果要在加载页面时看到滚动动画,请尝试在initCallbackjCarousel 的选项中设置超时:

jQuery("#mycarousel").jcarousel({
    initCallback: function(carousel) {
        if (window.location.hash) {
            var hash = window.location.hash.slice(1);
            setTimeout(function() {
                carousel.scroll(parseInt(hash, 10));
            }, 500);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

似乎在FF/Chrome中工作.我在Ubuntu上,所以我无法在IE或Safari上试用它.