【问题标题】:Bootstrap Carousel's active item issue引导轮播活动项目问题
【发布时间】:2017-01-02 05:36:49
【问题描述】:

我正在尝试了解基于this one 的引导程序轮播。 但是当我尝试制作模拟的时候。但它不能作为它的演示。 当用户单击另一个 <li> 时,活动项无法更改。我试过了,但还是不明白为什么。 这是我的 HTML:

<div class="container">
  <div id="myCarousel" class="carousel slide" data-ride="carousel">

    <ul class="nav nav-pills nav-justified">
      <li data-target="#myCarousel" data-slide-to="0" class="active"><a href="#">About<small>Lorem ipsum dolor sit</small></a></li>
      <li data-target="#myCarousel" data-slide-to="1"><a href="#">Projects<small>Lorem ipsum dolor sit</small></a></li>
      <li data-target="#myCarousel" data-slide-to="2"><a href="#">Portfolio<small>Lorem ipsum dolor sit</small></a></li>
    </ul>

    <!-- Wrapper for slides -->
    <div class="carousel-inner">
      <div class="item active">
        <img src="http://placehold.it/1200x400/cccccc/ffffff" />
      </div>
      <!-- End Item -->

      <div class="item">
        <img src="http://placehold.it/1200x400/999999/cccccc">
      </div>
      <!-- End Item -->

      <div class="item">
        <img src="http://placehold.it/1200x400/dddddd/333333">
      </div>
      <!-- End Item -->
    </div>
    <!-- End Carousel Inner -->

  </div>
</div>

我的 JS:

$(document).ready(function() {
  $('#myCarousel').carousel({
    interval: 4000
  });
  $('#myCarousel.nav a').on('click', function() {
    clickEvent = true;
    $('.nav li').removeClass('active');
    $(this).parent().addClass('active');
  });
});

谁能告诉我怎么了?我还是这个 jquery 的新手。 在他的演示中,他为什么这样使用:

$('#myCarousel').on('click', '.nav a', function() {...});

我以为我们只能使用:

$('#myCarousel').on('click',function(){...});

这是我从Jquery click()学到的

这是我的source

【问题讨论】:

  • 我忘记添加我的自定义 js 。对不起大家,感谢您的帮助。

标签: javascript jquery css twitter-bootstrap


【解决方案1】:

您好,我尝试了相同的 js 并创建了这个 Fiddle 它对我来说很好用

请检查并告诉我。

$(document).ready( function() {
    $('#myCarousel').carousel({
   interval:   4000
    });

    var clickEvent = false;
    $('#myCarousel').on('click', '.nav a', function() {
            clickEvent = true;
            $('.nav li').removeClass('active');
            $(this).parent().addClass('active');        
    }).on('slid.bs.carousel', function(e) {
        if(!clickEvent) {
            var count = $('.nav').children().length -1;
            var current = $('.nav li.active');
            current.removeClass('active').next().addClass('active');
            var id = parseInt(current.data('slide-to'));
            if(count == id) {
                $('.nav li').first().addClass('active');    
            }
        }
        clickEvent = false;
    });
});

【讨论】:

    【解决方案2】:

    您正在尝试使用类 .nav 定位具有 #myCarousel 的元素,但您的类在该 id 下。因此,为了定位锚标记,您必须告诉 #myCarousel 并通过在选择器之间放置空格来找到具有 .nav 类的孩子。

    Fiddle

    改变这个

      $('#myCarousel.nav a')
    

     $('#myCarousel .nav a')
    

    关于选择的问题,请查看此问题link

    【讨论】:

    • 我按照我的建议进行了更改。但仍然无法更改轮播的活动项目
    • 看看小提琴。
    • 我也复制了你的代码。但我不会工作。我不知道为什么。它仍然无法更改活动项目,活动滑块仍然运行良好。
    • jquery 版本可能不同,请查看
    • 使用 jquery-3.1.1.min.js 和引导程序 3.3.7。你用的是哪个版本???
    猜你喜欢
    • 1970-01-01
    • 2018-11-24
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多