0

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

尝试将其合并到我的演示中,但无济于事,不确定我做错了什么?
演示: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;
        }
    });
});
4

2 回答 2

1

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

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

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

  • 最后,我放入了一个 hashchange 监听器,这样如果用户在没有重新加载页面的情况下更改了 hash,它将循环到正确的幻灯片。

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

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

于 2013-01-20T21:34:45.473 回答
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;
        }
});
于 2013-01-20T21:22:11.633 回答