14

我正在使用很棒的CarouFredSel JQuery carousel 插件,它还包括为手持设备集成JQuery TouchSwipe库的功能。

carousel 元素是 div,在 div 中是包含在<ahref>标签中的图像和文本。

一切正常,但我注意到如果轮播元素(在本例中为 div)包含链接,则各种移动设备上的滑动效果不起作用。

如果我删除图像/文本周围的链接,则滑动动作可以正常工作。这几乎就像preventDefault()是在反向工作。如果我删除图像周围的链接,并将文本保留为链接,则滑动适用于图像,而不是文本。

我可以轻松地单击该项目作为链接,如果它是链接,我就无法滑动。

有没有人特别遇到过 CarouFredsel 的这个问题?

非常感谢,所以。

4

6 回答 6

29

默认情况下,对元素禁用 Touchswipe。

http://labs.rampinteractive.co.uk/touchSwipe/demos/Excluded_children.html

来自链接:默认情况下,$.fn.swipe.defaults.excludedElements 的值为“button, input, select, textarea, a, .noSwipe,” 要替换或清除列表,请重新设置 excludeElements 数组。要附加到它,请执行以下操作(不要忘记前面的逗号)...

excludedElements:$.fn.swipe.defaults.excludedElements+", #some_other_div" });

我最终只是更改了插件中的默认值,因为我所有的模态都是锚元素的子元素。

excludedElements:"button, input, select, textarea, .noSwipe"
于 2013-05-09T16:06:41.493 回答
8

带有< a >的 carouFredSel不适用于“内部”滑动。您可以使用excludeElements,但在 Ipad 上,您必须按住手指才能使用 < a > (longTap)。这对用户不利。如果您尝试使用 carouFredSel({ swipe:( option { tap: function ... 它将不起作用(至少在我的情况下)。

我的解决方案是单独使用滑动(touchSwipe):

$(".carusel").swipe({
  excludedElements: "button, input, select, textarea, .noSwipe",
  swipeLeft: function() {
    $('.carusel').trigger('next', 4);
  },
  swipeRight: function() {
    $('.carusel').trigger('prev', 4);
  },
  tap: function(event, target) {
    window.open($(target).closest('.carusel-cnt').find('carusel-cnt-link').attr('href'), '_self');
  }
});
于 2013-06-27T04:21:05.183 回答
3

好吧,我真的很想知道在 TouchSwipe 和 CarouFredSel 插件中使用链接是否可行,但我找到了一种似乎可行的解决方法。

希望它会帮助某人。

我最终使用了第二个触摸 jquery 库TouchWipe

当调用 CarouFredSel 插件时,我将 swipe 参数设置为 true:

$('#carousel-slider').carouFredSel({
        width: '100%',
        prev: '#prev-propslider',
        next: '#next-propslider',
        swipe: true
});

然后,同时调用 TouchSwipe 和 Touchwipe 库(不确定这是否重要,但我将常规的 TouchSwipeswipe:true参数用于另一个没有链接的滑块),我编写了一个单独的函数来调用 TouchWipe 插件的自定义事件:

$('#carousel-slider').touchwipe({
        wipeLeft: function() {
            $('#carousel-slider').trigger('next', 1);
        },
        wipeRight: function() {
            $('#carousel-slider').trigger('prev', 1);
        }
});

希望这对某人有所帮助,但我真的很想知道 TouchSwipe 和 CarouFredSel 是否可以使用<a href>标签,因为我找不到任何实时工作示例。

于 2013-03-12T18:43:22.067 回答
1

感谢排除元素的解决方案,这也解决了我的问题。从来没想过。

但是你不必单独使用touchwipe插件,caroufredsel插件中有“swipe.options”作为touchswipe的配置选项。查看caroufredsel 选项

我想你可以在那里使用touchswipe 插件的所有选项

于 2013-08-06T15:57:41.560 回答
1

您可以使用以下功能在滑动后启用点击。

`$('.class').swipe({
  swipe: function(event, direction, distance, duration, fingerCount) {},
  click: function(event, target) {
    $(target).click();
  },
  threshold: 75
});`

https://stackoverflow.com/a/11919170/3223427

于 2014-10-08T07:24:58.120 回答
0

Caroufredsel 已经集成并与 touchswipe 兼容。

  1. 添加 tochswipe js 库
  2. 在 caroufresel 配置中添加触摸事件

JAVASCRIPT 结果

 $(document).ready(function () {
     $('#foo2').carouFredSel({
         auto: false,
         responsive: false,
         items: {
             visible: 3,
             width: 100
         },
         width: 600,
         prev: '#prev2',
         next: '#next2',
         pagination: "#pager2",
         swipe: {
             onMouse: true,
             onTouch: true
         }
     });
 });

这是一个工作演示

于 2013-03-28T12:07:36.927 回答