为了账号安全,请及时绑定邮箱和手机立即绑定

带有 Javascript 功能的引导轮播播放和暂停

带有 Javascript 功能的引导轮播播放和暂停

肥皂起泡泡 2022-11-11 16:07:55
我在引导程序中的轮播类中遇到问题。我已经定义了一个默认为暂停按钮的按钮,然后我在该按钮上使用 javascript 函数来控制轮播,就像单击时一样,图标应该变为播放并且轮播应该停止循环,但是 .click(function)单击按钮时不起作用,而是在我将鼠标放在按钮上时暂停轮播。请帮我解决这个问题。  $(文档).ready(函数(){            $("#mycarousel").carousel( { 间隔:2000 } );            $("#carouselButton").click(function()            {                if ($("#carouselButton").children("span").hasClass('fa-pause'))                {                    $("#mycarousel").carousel("暂停");                    $("#carouselButton").children("span").removeClass('fa-pause');                    $("#carouselButton").children("span").addClass('fa-play');                }                else if ($("#carouselButton").children("span").hasClass('fa-play'))                {                    $("#mycarousel").carousel("cycle");                    $("#carouselButton").children("span").removeClass('fa-play');                    $("#carouselButton").children("span").addClass('fa-pause');                                    }            });        });
查看完整描述

4 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

好问题。我也无法{ pause:null }按照你的意愿上班。但是更多地挖掘这个,我得到了一个可行的解决方案......

  • 关键是在div上切换data-interval属性carousel

  • 但这并没有启动循环,触发启动......我们要么必须手动悬停和悬停......或者自动化它(我们做了)

  • 但是由于通过 jQuery 添加/删除这个属性有一些滞后,我们(hackish-ly)添加一个setTimeout来处理这个

下面的工作片段

$(document).ready(function() {


  $('#playPause').click(function() {

    if ($("#myCarousel").attr("data-interval")) {

      $("#myCarousel").removeAttr("data-interval");

      $(".carousel-item>.active").removeAttr("active");

      setTimeout(function() {

        $(".carousel-control-next").trigger('click');

        $(".carousel-inner").trigger('mouseenter');

        $("#myCarousel").trigger('mouseenter');

      }, 500);

    } else {

      $("#myCarousel").attr("data-interval", "500");

      setTimeout(function() {

        $(".carousel-control-next").trigger('click');

        $(".carousel-inner").trigger('mouseenter');

        $("#myCarousel").trigger('mouseenter');

        $("#myCarousel").trigger('mouseleave');

      }, 1000);

    }

  });


  // Enable Carousel Indicators

  $(".item1").click(function() {

    $("#myCarousel").carousel(0);

  });

  $(".item2").click(function() {

    $("#myCarousel").carousel(1);

  });

  $(".item3").click(function() {

    $("#myCarousel").carousel(2);

  });


  // Enable Carousel Controls

  $(".carousel-control-prev").click(function() {

    $("#myCarousel").carousel("prev");

  });

  $(".carousel-control-next").click(function() {

    $("#myCarousel").carousel("next");

  });

});

/* Make the image fully responsive */


.carousel-inner img {

  width: 100%;

  height: 100%;

}

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>


<div class="container mt-3">

  <button type='button' id='playPause'>Play / Pause</button>


  <!-- The carousel -->

  <div id="myCarousel" class="carousel slide mt-4">


    <!-- Indicators -->

    <ul class="carousel-indicators">

      <li class="item1 active"></li>

      <li class="item2"></li>

      <li class="item3"></li>

    </ul>


    <!-- The slideshow -->

    <div class="carousel-inner">

      <div class="carousel-item active">

        <img src="https://www.w3schools.com/bootstrap4/la.jpg" alt="Los Angeles" width="1100" height="500">

      </div>

      <div class="carousel-item">

        <img src="https://www.w3schools.com/bootstrap4/chicago.jpg" alt="Chicago" width="1100" height="500">

      </div>

      <div class="carousel-item">

        <img src="https://www.w3schools.com/bootstrap4/ny.jpg" alt="New York" width="1100" height="500">

      </div>

    </div>


    <!-- Left and right controls -->

    <a class="carousel-control-prev" href="#myCarousel">

      <span class="carousel-control-prev-icon"></span>

    </a>

    <a class="carousel-control-next" href="#myCarousel">

      <span class="carousel-control-next-icon"></span>

    </a>

  </div>

</div>


查看完整回答
反对 回复 2022-11-11
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

我相信您留下了具有相同 ID 的未注释 div:

<div class="btn-group" id="carouselButton">

那么具有相同 id 的按钮将不起作用:

<button class="btn btn-danger btn-sm" id="carouselButton">

我有同样的问题。代码来自Coursera,前端 Web UI 框架和工具:Bootstrap 4 Week 4,练习(说明):更多 Bootstrap 和 JQuery


查看完整回答
反对 回复 2022-11-11
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

下面的答案效果很好,并且在 JavaScript 中具有不同的口味


function buttonFlip() {   

  var parentButton = document.getElementById("carouselButton");

  var childSpan = document.getElementById("carouselButton_span");

  if (parentButton.contains(childSpan) && childSpan.classList.contains("fa-pause")) {

      $("#mycarousel").carousel('pause');

      childSpan.classList.remove("fa-pause");

      childSpan.classList.add("fa-play");

  }

  else {

      $("#mycarousel").carousel('cycle');

      childSpan.classList.remove("fa-play");

      childSpan.classList.add("fa-pause");

  }

}


查看完整回答
反对 回复 2022-11-11
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

如果这是来自 coursera 的引导课程第 4 课,我遇到了同样的问题。


转到这部分并在我的情况下更改 ID,我将 carousel-style 作为 id。然后转到样式表并将#carouselButton 更改为您在btn-group 中命名的id。


它应该在那之后工作。


PS老师不给你解释还要你把播放图标改成“fas fa play”作为班级


它应该看起来像这样。


div class="btn-group" id="carousel-style">

   <button class="btn btn-light btn-sm" id="carouselButton">

        <span class="fa fa-pause"></span>

    </button>

 </div>

Javascript 应如下所示:


<script>

$(document).ready(function() {

    $('#mycarousel').carousel({ interval: 2000 });

    $("#carouselButton").click(function(){

            if ($("#carouselButton").children("span").hasClass('fa fa-pause')) {

                $("#mycarousel").carousel('pause');

                $("#carouselButton").children("span").removeClass('fa fa-pause');

                $("#carouselButton").children("span").addClass('fas fa-play');

            }

            else if ($("#carouselButton").children("span").hasClass('fas fa-play')){

                $("#mycarousel").carousel('cycle');

                $("#carouselButton").children("span").removeClass('fas fa-play');

                $("#carouselButton").children("span").addClass('fa fa-pause');                    

            }

        });

}); </script>


查看完整回答
反对 回复 2022-11-11
  • 4 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信