【问题标题】:Why won't this Bootstrap Carousel swipe function work for me?为什么这个 Bootstrap Carousel 滑动功能对我不起作用?
【发布时间】:2017-09-08 08:27:16
【问题描述】:

我找到了这个代码笔:https://codepen.io/andrearufo/pen/rVWpyE

我很想使用它,但由于某种原因,它对我不起作用,即使我复制它而不改变任何东西。这是为什么呢?

我没有忘记嵌入 bootstrap 或 jquery。

我还尝试了其他滑动功能的解决方案,但由于某种原因,它们都不起作用。滑动工作的唯一轮播(我在 Google Chrome 开发人员工具中尝试过)是在这个 codepen 上。

$(".carousel").swipe({

  swipe: function(event, direction, distance, duration, fingerCount, fingerData) {

    if (direction == 'left') $(this).carousel('next');
    if (direction == 'right') $(this).carousel('prev');

  },
  allowPageScroll:"vertical"

});
<div class="container">
  
  <div class="page-header">
    <h1>Bootstrap default carousel with swipe and touch gestures</h1>
    <p class="lead">How to add the swipes gesture to comand the Bootstrap carousel on mobile devices.</p>
    <p>Made by <strong>Andrea Rufo</strong>, more info and tutorial on <a href="http://www.orangedropdesign.com/"> OrangeDropDesign.com</a></p>
  </div>
       

  <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
    <!-- Indicators -->
    <ol class="carousel-indicators">
      <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
      <li data-target="#carousel-example-generic" data-slide-to="1"></li>
      <li data-target="#carousel-example-generic" data-slide-to="2"></li>
      <li data-target="#carousel-example-generic" data-slide-to="3"></li>
      <li data-target="#carousel-example-generic" data-slide-to="4"></li>
    </ol>

    <!-- Wrapper for slides -->
    <div class="carousel-inner" role="listbox">
      <div class="item active">
        <img src="https://unsplash.it/1400/600?image=114">
      </div>
      <div class="item">
        <img src="https://unsplash.it/1400/600?image=745">
      </div>
      <div class="item">
        <img src="https://unsplash.it/1400/600?image=315">
      </div>
      <div class="item">
        <img src="https://unsplash.it/1400/600?image=622">
      </div>
      <div class="item">
        <img src="https://unsplash.it/1400/600?image=401">
      </div>
    </div>

    <!-- Controls -->
    <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
      <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
      <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>

</div>

【问题讨论】:

    标签: jquery twitter-bootstrap codepen


    【解决方案1】:

    这是您可能会错过的示例 JQuerySwipe LIB。

    $(".carousel").swipe({
    
      swipe: function(event, direction, distance, duration, fingerCount, fingerData) {
    
        if (direction == 'left') $(this).carousel('next');
        if (direction == 'right') $(this).carousel('prev');
    
      },
      allowPageScroll:"vertical"
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    
    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    
    <!-- Latest compiled and minified JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery.touchswipe/1.6.4/jquery.touchSwipe.min.js"></script>
    <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
        <!-- Indicators -->
        <ol class="carousel-indicators">
          <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
          <li data-target="#carousel-example-generic" data-slide-to="1"></li>
          <li data-target="#carousel-example-generic" data-slide-to="2"></li>
          <li data-target="#carousel-example-generic" data-slide-to="3"></li>
          <li data-target="#carousel-example-generic" data-slide-to="4"></li>
        </ol>
    
        <!-- Wrapper for slides -->
        <div class="carousel-inner" role="listbox">
          <div class="item active">
            <img src="https://unsplash.it/1400/600?image=114">
          </div>
          <div class="item">
            <img src="https://unsplash.it/1400/600?image=315">
          </div>
          <div class="item">
            <img src="https://unsplash.it/1400/600?image=622">
          </div>
          <div class="item">
            <img src="https://unsplash.it/1400/600?image=401">
          </div>
        </div>
    
        <!-- Controls -->
        <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
          <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
          <span class="sr-only">Previous</span>
        </a>
        <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
          <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
          <span class="sr-only">Next</span>
        </a>
      </div>
    
    </div>

    【讨论】:

      【解决方案2】:

      希望你能得到帮助

      (function ($) {
          var touchStartX = null;
      
          $('.carousel').each(function () {
              var $carousel = $(this);
              $(this).on('touchstart', function (event) {
                  var e = event.originalEvent;
                  if (e.touches.length == 1) {
                      var touch = e.touches[0];
                      touchStartX = touch.pageX;
                  }
              }).on('touchmove', function (event) {
                  var e = event.originalEvent;
                  if (touchStartX != null) {
                      var touchCurrentX = e.changedTouches[0].pageX;
                      if ((touchCurrentX - touchStartX) > 60) {
                          touchStartX = null;
                          $carousel.carousel('prev');
                      } else if ((touchStartX - touchCurrentX) > 60) {
                          touchStartX = null;
                          $carousel.carousel('next');
                      }
                  }
              }).on('touchend', function () {
                  touchStartX = null;
              });
          });
      
      })(jQuery);
      

      这是工作演示的链接 - https://jsfiddle.net/L5begcz5/

      【讨论】:

      • 这可以快速轻松地解决我的问题,而不是调试!谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      相关资源
      最近更新 更多