【问题标题】:jQuery Unslide - Touch doesn't workjQuery Unslide - 触摸不起作用
【发布时间】:2013-07-06 21:18:55
【问题描述】:

我已经解决了这个问题,我发帖只是为了帮助其他人节省一些时间。

我正在将 unslider 用于商业网站,我正在制作一个响应式网站,因此向滑块添加触摸支持的功能很有吸引力。不幸的是,正如作者声称的那样,它不能直接开箱即用。

【问题讨论】:

    标签: javascript jquery touch responsive-design slideshow


    【解决方案1】:

    截至今天(2014 年 11 月),滑动功能似乎已被移动取代。该插件的网址是 http://stephband.info/jquery.event.move/ 。只需导入这个而不是滑动。

    我希望有人觉得这很有用。必须检查提交才能找出答案。

    【讨论】:

    • Swipe 和 Movie 都是 Stephband 制作的,Move 已经包含在内,因为 Swipe 依赖于它。
    • 尽管如此,在我更改滑动移动之前,触摸对我不起作用。很奇怪,对吧?
    【解决方案2】:

    由于我是一个真正的菜鸟并且在安装 Jquery.event.swipe.js 模块时遇到了麻烦,所以我在这个问题上遇到了麻烦 现在已经解决了,但是像我这样的菜鸟一定要检查一下:

    • 确保您的 projet 文件夹中有 github.com/stephband/jquery.event.move.js 和 github.com/stephband/jquery.event.swipe.js
    • 在您的 html 文件中引用这两个文件
    • 确保您的 projet 文件夹中也有 unslider.js 文件(我有 unslider.min.js 文件,但它不够完整,无法让滑动插件正常工作)

    在 html 文件中不需要额外的 javascript 代码,它应该可以与上述内容一起使用(至少它对我有用)

    这两个非常好的免费工具,感谢编码人员

    【讨论】:

      【解决方案3】:

      这对我不起作用,但经过大量调整后,我让它顺利运行。我一步一步地在博客上写了我所做的,但不知道为什么。 http://frazer.livejournal.com/21898.html

      我希望这会有所帮助,尤其是对 drupal 的新手。

      简而言之 - 我将此添加到我的页面中,并且我得到了响应式动作:

      var wrap = jQuery(".slides_wrap"),
         slides = wrap.find(".img_slide"),
         width = slides.width();
      slides
      .on("move", function(e) {
                // Move slides with the finger
      // banner has moved -100% when one slide to the right
         var left = 100 * e.deltaX / width;
         wrap[0].style.left = parseInt(wrap[0].style.left.replace("%", ""))+left+"%";
      })
      .on("moveend", function(e) {
      setTimeout(function(){
         var left = parseFloat(wrap[0].style.left.replace("%", ""));
         var left_rounded = Math.round(left/100)*100;
         if(left%100!=0){
           jQuery(".slides_wrap").animate({"left":left_rounded + "%"});
        }
      },800);
      });
      

      【讨论】:

      • 请把答案内容贴在这里,以防链接失效。
      • 实际上,像这样修复 unslider.js 确实添加了滑动,但它看起来没有响应,只有完全滑动才能使其移动。
      【解决方案4】:

      更新
      我使用的 unslider 插件已经过时了。我是从我第一次找到它的 unslider.com 下载的(它仍然是一个过时的版本),因此我遇到了困难。

      如需获取最新版本,请前往:https://github.com/idiot/unslider/

      如果您想查看我的问题报告:https://github.com/idiot/unslider/issues/69


      问题是作者已经4个月没有更新他的项目了,从那以后swipe事件就从$.event.swipe移到了$.event.special.swipe。

      问题出现在 unslider 插件的第 108 行,它测试是否存在 swipe 插件。

      108: if($.event.swipe) {
      109:    this.el.on('swipeleft', _.prev).on('swiperight', _.next);
      

      只要改成:

      108: if($.event.special.swipe) {
      109:    this.el.on('swipeleft', _.prev).on('swiperight', _.next);
      

      这很容易解决,但需要一些谷歌搜索才能弄清楚。

      如果您想确保它适用于早期版本,您可以这样做:

      108: if($.event.special.swipe || $.event.special.swipe) {
      109:    this.el.on('swipeleft', _.prev).on('swiperight', _.next);
      

      但我不建议这样做。

      另外,作者没有提到这一点,但是swipe插件页面有,你的脚本中除了jquery.event.swipe之外还需要包含jquery.event.move。 p>

      我希望这对某人有所帮助:)


      回答下面的评论:

      记住以正确的顺序包含所有文件,并记住所有文件:

      <script type="text/javascript" src="/scripts/jquery-1.10.2.min.js"></script>
      <script type="text/javascript" src="/scripts/jquery.event.move.js"></script>
      <script type="text/javascript" src="/scripts/jquery.event.swipe.js"></script>
      <script type="text/javascript" src="/scripts/unslider.min.js"></script>
      

      【讨论】:

      • 感谢您发布此信息。我检查了我的脚本,当我下载它时它已经有了这个: if ($.event.special['swipe'] || $.Event('swipe')) { el.on('swipeleft swiperight swipeLeft swipeRight', function (e) { e.type.toLowerCase() == 'swipeleft' ? _.next() : _.prev(); }); };但它仍然不起作用。我还包括 jquery.event.swipe.js 但它不起作用。有什么想法吗?
      • 您是否以正确的顺序包含脚本文件?另外,您确定它不起作用吗,它的感觉不像您想象的那么直观。
      • @starbucks 我认为你应该在 unslider 的设置中使用complete 事件。无论哪种方式,您都可以获得活动的 div,或者您必须选择它,我想。
      • 截至 2014 年 5 月,该插件已在 github 中进行了更新——具有有效的触摸过渡。但是该站点尚未更新,因此此答案非常有帮助!
      • 在给出这个初步答案两年后,它仍然具有相关性和完美性。谢谢@AndréSnedeHansen!
      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2014-05-27
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多