具有哈希永久链接的jQuery循环

具有哈希永久链接的jQuery循环,jquery,hash,cycle,jquery-cycle,Jquery,Hash,Cycle,Jquery Cycle,我试图让jQuery循环使用每张幻灯片的唯一名称,以便能够直接链接到每张幻灯片。我在malsups网站上发现: 试图将其纳入我的演示中,但无效,不确定我做错了什么? 演示: 即使我去了http://jsbin.com/uviram/1#slide2它仍然会让我想到http://jsbin.com/uviram/1#slide1 $(function() { var h, hash = window.location.hash, hashes = {}

我试图让jQuery循环使用每张幻灯片的唯一名称,以便能够直接链接到每张幻灯片。我在malsups网站上发现:

试图将其纳入我的演示中,但无效,不确定我做错了什么?
演示:

即使我去了
http://jsbin.com/uviram/1#slide2
它仍然会让我想到
http://jsbin.com/uviram/1#slide1

$(function() {

    var h, 
        hash = window.location.hash, 
        hashes = {},
        index = 0;

    $('.slideshow slide').each(function(i) {
        h = $(this).data('hash');
        hashes[h] = i;
    });

    if (hash)
        index = hashes[hash.substring(1)] || index;

    $('.slideshow').cycle({
        fx: 'scrollHorz',
        timeout: 0,
        prev: $('.prev'),
        next: $('.next'),
        after: function(curr,next,opts) {
            h = $(this).data('hash');
            window.location.hash = h;
        }
    });
});

您尚未包括
开始幻灯片
选项以将您的
索引
传递给

$('.slideshow').cycle({
        /* pass index to startingSlide*/
        startingSlide:index,
        fx: 'scrollHorz',
        timeout: 0,
        prev: $('.prev'),
        next: $('.next'),
        after: function(curr,next,opts) {
            h = $(this).data('hash');
            window.location.hash = h;
        }
});

我已经更新了你的jsbin演示,现在就可以使用了。有三个问题:

  • 首先,我将
    $('.slideshow slide')
    更改为
    $('.slideshow)
    .slide')
    以正确选择幻灯片

  • 其次,我将startingSlide选项放入循环调用中

  • 最后,我加入了一个hashchange监听器,以便在用户发生更改时 在不重新加载页面的情况下,哈希将循环到正确的 幻灯片

查看更新的演示,看看它是否正常工作:


好的,那么您使用的是什么代码?@TomWalters现在更新了代码片段,我链接到的演示中提供了完整的代码!将
$(function(){
更改为
$(document)。准备就绪(function(){
?@Mooseman)它们具有完全相同的效果可能需要查看
循环2
。具有许多新功能,包括响应式布局和自动初始化