jQuery Lightslider 插件分页器 onclick 事件

Posted

技术标签:

【中文标题】jQuery Lightslider 插件分页器 onclick 事件【英文标题】:jQuery lightslider plugin pager onclick event 【发布时间】:2015-12-04 23:16:05 【问题描述】:

我想获取jquery lightslider插件的pager元素的onclick事件,我试过下面的代码,

var $slide = $('#light-slider').parent('.lSSlideWrapper');
var $cSouter = $slide.parent();
var $pager = $cSouter.find('.lSPager').find('li').find('a');            
console.log($pager);
$pager.on('click',function()
    console.log('test');                
);

pager 的 console.log 打印以下值

[a, a, a, a, prevObject: n.fn.init[4], context: document, selector: ".lSPager li a"]

但是链接onclick事件没有触发,请问我做错了什么。

【问题讨论】:

是否必须在单击按钮时进行,还是在幻灯片切换到下一个或上一个时执行操作就足够了? 其实点击pager时幻灯片会暂停,但我想在10秒后播放 嗯,我不确定我是否跟随。你能做一个 jsFiddle 来显示这个问题吗? 查看此链接sachinchoolur.github.io/lightslider/examples.html 好的,你能详细解释一下你希望它做什么吗? 【参考方案1】:

您最大的问题是插件绑定到寻呼机控件的函数以 return false; 结尾,这可以防止此事件进一步冒泡,因此在此之后绑定到元素的其他函数不会被调用.

$pager.on('click', function() 
  if (settings.loop === true && settings.mode === 'slide') 
    scene = scene + ($pager.index(this) -

      $cSouter.find('.lSPager').find('li.active').index());
   else 
    scene = $pager.index(this);
  
  $el.mode(false);
  if (settings.gallery === true) 
    $this.slideThumb();
  
  clearInterval(interval);
  return false; // this line prevents any further bubbling for this event so not other functions that are bound to the element after this are going to get called
);

恕我直言,最简单的解决方法是修改插件以添加一个回调函数,如onBeforePageChange,这将允许您执行以下操作:

$('#responsive').lightSlider(
        item:4,
        loop:false,
        slideMove:2,
        easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
        speed:600,
        responsive : [
            
                breakpoint:800,
                settings: 
                    item:3,
                    slideMove:1,
                    slideMargin:6,
                  
            ,
            
                breakpoint:480,
                settings: 
                    item:2,
                    slideMove:1
                  
            
        ],
        onBeforePageChange: function ()  // this is a custom callback we have added
            console.log('onBeforePrevSlide called'); // do what ever you want here, like play the slider after a delay
        
    ); 

这是一个working jsFiddle,插件代码中添加了回调

【讨论】:

以上是关于jQuery Lightslider 插件分页器 onclick 事件的主要内容,如果未能解决你的问题,请参考以下文章

超好用的一个JQUERY分页器-jpaginate

lightslider-支持移动触摸的轻量级jQuery幻灯片插件

Jquery 循环 - 在不破坏缩略图分页器的情况下将图像包装在 div 标签中

SweetAler弹框插件与分页器插件

一个swiper 两个分页器的写法总结

swiper.js 2.0增加一个鼠标移入分页器的小点后就切换展示图片