【问题标题】:how to synchronize two carousel slider - Twitter Bootstrap如何同步两个轮播滑块 - Twitter Bootstrap
【发布时间】:2016-10-26 11:44:06
【问题描述】:

我在一页上有两个滑块(twitter bootstrap 3.3.6)。两者都应该通过相同的控制元素激活。当通过键盘箭头键激活时——非常快的点击——我失去了同步;特别是在 Firefox (v 49.0.1) 中。这意味着 header-slider 中的图像不属于 content-slider 中的文本。

我怎么知道,只有当两个滑块的动画都完成时,滑块才会被激活?

我已经尝试过使用 jQuery-promise(),但是错误依旧。

感谢您的帮助。

$(document).ready(function() {
  $('#sliderHeader, #sliderPartner').carousel({
    interval: false
  })
  $('#sliderPartner a.left').click(function(event) {
    event.stopPropagation();
    $(".carousel").promise().done(function() {
      $('#sliderHeader').carousel('prev');
      $('#sliderPartner').carousel('prev');
    });
  });
  $('#sliderPartner a.right').click(function(event) {
    event.stopPropagation();
    $(".carousel").promise().done(function() {
      $('#sliderHeader').carousel('next');
      $('#sliderPartner').carousel('next');
    });
  });
  $('#sliderPartner .carousel-indicators li').click(function(event) {
    event.stopPropagation();
    var indicatorNumber = $(this).attr('data-slide-to');
    $('#sliderHeader').carousel(parseInt(indicatorNumber));
    $('#sliderPartner').carousel(parseInt(indicatorNumber));
  });
  $("body").keyup(function(e) {
    e.stopPropagation();
    if (e.keyCode == 37) { // left
      $('#sliderPartner a.left').trigger('click');
    } else if (e.keyCode == 39) { // right
      $('#sliderPartner a.right').trigger('click');
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<!-- Twitter Bootstrap -->
<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>

<header>
  <div id="sliderHeader" class="carousel slide">

    <!-- Wrapper for slides -->
    <div class="carousel-inner" role="listbox">
      <div class="item active">
        image0
      </div>
      <div class="item">
        image1
      </div>
      <div class="item">
        image2
      </div>
      <div class="item">
        image3
      </div>
      <div class="item">
        image4
      </div>
    </div>
  </div>
</header>

<section>
  <div class="row">
    <div class="col-md-12">
      <div id="sliderPartner" class="carousel slide">
        <!-- Indicators -->
        <ol class="carousel-indicators">
          <li data-target="#sliderPartner" data-slide-to="0" class="active"></li>
          <li data-target="#sliderPartner" data-slide-to="1"></li>
          <li data-target="#sliderPartner" data-slide-to="2"></li>
          <li data-target="#sliderPartner" data-slide-to="3"></li>
          <li data-target="#sliderPartner" data-slide-to="4"></li>
        </ol>

        <!-- Wrapper for slides -->
        <div class="carousel-inner" role="listbox">
          <div class="item active">
            <p>Content0</p>
          </div>
          <div class="item">
            <p>Content1</p>
          </div>
          <div class="item">
            <p>Content2</p>
          </div>
          <div class="item">
            <p>Content3</p>
          </div>
          <div class="item">
            <p>Content4</p>
          </div>
        </div>

        <!-- Controls -->
        <a class="left carousel-control" href="#sliderPartner" role="button" data-slide="prev">
          <span class="glyphicon icon-prev" aria-hidden="true"></span>
          <span class="sr-only">Zurück</span>
        </a>
        <a class="right carousel-control" href="#sliderPartner" role="button" data-slide="next">
          <span class="glyphicon icon-next" aria-hidden="true"></span>
          <span class="sr-only">Vor</span>
        </a>
      </div>
    </div>
  </div>
</section>

【问题讨论】:

    标签: javascript jquery twitter-bootstrap twitter-bootstrap-3 carousel


    【解决方案1】:

    为什么不使用一个全局变量来跟踪您所在的页面。

    $(() => {
        const MAX_PAGE = 10 // or however many pages
        let pageNum = 0
    
        goToPage = (newPage) => {
            pageNum = Math.max(0, (Math.min(newPage, MAX_PAGE))
            doPageChange(pageNum)
        }
        next = () => { goToPage(pageNum + 1) }
        prev = () => { goToPage(pageNum - 1) }
    })
    

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 2017-06-03
      • 2019-04-03
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 2015-05-22
      相关资源
      最近更新 更多