jQuery循环使用哈希永久链接

时间:2013-01-20 20:53:30

标签: jquery hash cycle jquery-cycle

我正在尝试让jQuery Cycle使用每张幻灯片中的唯一名称,以便能够直接链接到每张幻灯片。我在malsups网站上发现了这个:http://jquery.malsup.com/cycle/perma2.html

试图将它合并到我的演示中,但无济于事,不确定我做错了什么? DEMO: http://jsbin.com/uviram/1

即使我转到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;
        }
    });
});

2 个答案:

答案 0 :(得分:1)

我已经更新了你的jsbin演示,现在它可以正常工作了。有三个问题:

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

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

  • 最后,我放入了一个hashchange侦听器,以便在用户更改时 哈希没有重新加载页面,它将循环到正确的 滑动。

看看你的更新演示,看它是否有效:

http://jsbin.com/uviram/6#slide4

答案 1 :(得分:0)

您尚未添加startingSlide选项以将index传递给

$('.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;
        }
});