jQuery循环插件-有没有办法知道寻呼机何时准备好?

jQuery循环插件-有没有办法知道寻呼机何时准备好?,jquery,jcarousel,jquery-cycle,Jquery,Jcarousel,Jquery Cycle,我正在尝试使用,以允许我的分页缩略图水平滚动,它的工作良好。问题是,有时候jcarousel插件没有初始化,因为我认为分页还没有准备好。我的代码如下所示: $('#slideshow').cycle({ timeout : 0, speed : 1000, pager : '#image-carousel ul', pagerAnchorBuilder: function(idx, slide) { return '<li>&l

我正在尝试使用,以允许我的分页缩略图水平滚动,它的工作良好。问题是,有时候jcarousel插件没有初始化,因为我认为分页还没有准备好。我的代码如下所示:

$('#slideshow').cycle({
    timeout : 0,
    speed   : 1000,
    pager   : '#image-carousel ul',
    pagerAnchorBuilder: function(idx, slide) {
        return '<li><a href="#"><img src="' + slide.src + '" width="107" height="80" /></a></li>'; 
    }
});

$('#image-carousel').jcarousel();
$('#幻灯片放映')。循环({
超时:0,
速度:1000,
寻呼机:“#图像传送带ul”,
pagerAnchorBuilder:函数(idx、幻灯片){
返回“
  • ”; } }); $(“#图像旋转木马”).jcarousel();

    有时,当页面加载jcarousel时,它不工作,我使用setTimeout将其初始化延迟约2秒,并且每次都工作,因此我认为这一定是因为有时候寻呼机还没有准备好。我现在可以接受setTimeout解决方案,但我认为一定有更好的方法来处理这个问题。

    一种解决方法,如果你对修改cycle插件的源代码感到满意,你可以包括一个名为
    onPagerBuilt
    的回调,在构建分页后运行。在cycle.js中更改
    buildPager()
    函数,如下所示:

    function buildPager(els, opts) {
        var $p = $(opts.pager);
        $.each(els, function(i,o) {
            $.fn.cycle.createPagerAnchor(i,o,$p,els,opts);
        });
        opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
    
            // add this line
            if (typeof opts.onPagerBuilt == 'function') opts.onPagerBuilt();
    };
    
    然后,您需要将默认值添加到该列表中的某个位置:

    $.fn.cycle.defaults = {
      onPagerBuilt: null, // the callback to be run after pagination is built.
    
      // rest of the default options
      //...
    }
    
    那么您的脚本将是这样的:

    $('#slideshow').cycle({
        timeout : 0,
        speed   : 1000,
        pager   : '#image-carousel ul',
        pagerAnchorBuilder: function(idx, slide) {
            return '<li><a href="#"><img src="' + slide.src + '" width="107" height="80" /></a></li>'; 
        },
        onPagerBuilt: function () {
            $('#image-carousel').jcarousel();
        }
    });
    
    $('#幻灯片放映')。循环({
    超时:0,
    速度:1000,
    寻呼机:“#图像传送带ul”,
    pagerAnchorBuilder:函数(idx、幻灯片){
    返回“
  • ”; }, onPagerBuilt:函数(){ $(“#图像旋转木马”).jcarousel(); } });