我将循环插件设置为在一页上可以多次工作,但一切正常。我正在尝试使用touchwipe插件添加滑动事件,该插件在单周期轮播中效果很好,但是我无法使其在倍数上工作。

这是我的Javsacript,显示了Cycle代码,并在底部添加了Touchwipe:

function galleries () {

    var counter = 1

    $('.gallery .pics').each(function() {
        $(this).parent().attr('id','slideshow_'+counter);
        $(this).before('<ul class="next-prev-nav"><li><a href="#" class="prev-'+counter+'">Previous</a></li><li><a href="#" class="next-'+counter+'">Next</a></li></ul><div style="clear:both;"></a>');
        $(this).after('<ul class="gallery-nav-'+counter+'">');
        $(this).cycle({
            fx: 'scrollHorz',
            speed:  '400',
            timeout: '4000',
            pager:  '.gallery-nav-'+counter,
            next: '.next-'+counter,
            prev: '.prev-'+counter,
            pause:   1,
            pauseOnPagerHover: true,
            startingSlide: 0, // zero-based

            pagerAnchorBuilder: function(id, slide) {
                var s = $(slide);
                var imgsource = s.find('img.CycIMG').attr('src');

                // Set this as the source for our image
                return '<li><a href="#"><img src="' + imgsource + '" width="62" alt=""></a></li>';
            }
        }).cycle('pause');
        $(this).touchwipe({
            wipeLeft: function() {
                $('.pics').cycle('next');
            },
            wipeRight: function() {
                $(this).cycle('prev');
            }
        });
        counter++;
    });
}


从$(this).touchwipe开始的代码行是我无法使用的代码。我在这里展示两个不同的例子。 “ wipeLeft”功能可以工作,但是由于它针对的是通用类(“图片”),因此会一次滑动所有轮播。 “ wipeRight”功能是我希望它使用“ this”定位到循环中当前循环轮播的方式。我曾尝试针对开始时创建的每个轮播定位单个ID,但这似乎不起作用。

非常感谢您的帮助!

最佳答案

尝试在代码中添加上下文选择器:

$('.gallery .pics').each(function() {
    var parent = this.parentNode;

    /*...*/

    $(this).touchWipe({
        wipeLeft: function(){
            $('.pics', parent).cycle('next');
        }
    });
});


这是在选择器中添加“上下文”。与此类似:$(parent).find('.pics')

我实际上正在处理与您完全相同的情况,并且已经对其进行了测试:)

07-24 15:34