6

如果只有一个滑块存在,但似乎无法使其正常工作,我一直在尝试隐藏 Bootstrap Carousel 左右按钮。

我试过了

    if ($('.carousel-inner div').length === 1 ) { 
        $(this).find('.controls .carousel-control').hide();
    }

    if($('.carousel-inner .item').is(':only-child')) {
    $(this).find('.controls .carousel-control').hide();

没有任何运气。

有什么特别的原因为什么这些都不起作用?控制台返回正确数量的滑块,我在处理此轮播的不同函数上.length使用完全相同的方法。.hide

4

3 回答 3

13

只要您每页有 1 个轮播,接受的答案就可以正常工作。我有几个所以想我会添加到解决方案中:

基于使用标准引导轮播标记:

<div id="myCarousel" class="carousel slide">
  <ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
    <li data-target="#myCarousel" data-slide-to="2"></li>
  </ol>
  <!-- Carousel items -->
  <div class="carousel-inner">
    <div class="active item">…&lt;/div>
    <div class="item">…&lt;/div>
    <div class="item">…&lt;/div>
  </div>
  <!-- Carousel nav -->
  <a class="carousel-control left" href="#myCarousel" data-slide="prev">&lsaquo;</a>
  <a class="carousel-control right" href="#myCarousel" data-slide="next">&rsaquo;</a>
</div>

您需要遍历轮播的每次出现,使用 $(this) 并获取其兄弟姐妹:

$('.carousel-inner').each(function() {

    if ($(this).children('div').length === 1) $(this).siblings('.carousel-control, .carousel-indicators').hide();

});
于 2013-03-08T13:17:08.887 回答
7

而不是$(this).find(...).hide();尝试$('.controls .carousel-control').hide();

于 2012-07-12T21:06:01.647 回答
1

试试这个 Bootstrap 4+

$('.carousel-inner').each(function() {

if ($(this).children('div').length === 1) $(this).siblings('.carousel-indicators, .carousel-control-prev, .carousel-control-next').hide();

});
于 2018-09-04T11:16:30.487 回答