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)
您可以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上试用它.