问题 添加播放/暂停按钮以引导旋转木马


我已经阅读了几乎关于引导转盘的所有线程,但还没有找到我的问题的答案。 我在旋转木马上添加了两个控制按钮(播放/暂停),但每个按钮都会从默认/第一张幻灯片中激活该功能。我希望能够在点击事件发生时暂停当前幻灯片并从当前幻灯片播放。

这是我的代码:

<script src="/_catalogs/masterpage/UHN/js/bootstrap.min.js"></script>
<script>
    $(function () {
        $('.carousel').carousel({ interval:6000 });  

        $('#playButton').click(function () {
            $('#homeCarousel').carousel('cycle');
        });
        $('#pauseButton').click(function () {
            $('#homeCarousel').carousel('pause');
        });
    });

</script>

这两个控件:

<!--Carousel controls -->
<button id="playButton">Play</button>
<button id="pauseButton">Pause</button>

5173
2017-12-16 15:55


起源



答案:


这应该是有效的。我确保您的点击事件按照您的预期触发,因为引导轮播的某些元素可能出现在您的元素上方并阻止点击。

如果您添加以下控件 HTML

<div id="carouselButtons">
    <button id="playButton" type="button" class="btn btn-default btn-xs">
        <span class="glyphicon glyphicon-play"></span>
     </button>
    <button id="pauseButton" type="button" class="btn btn-default btn-xs">
        <span class="glyphicon glyphicon-pause"></span>
    </button>
</div>

然后是以下 JavaScript的 应控制任何帧的开始和停止:

$('#playButton').click(function () {
    $('#homeCarousel').carousel('cycle');
});
$('#pauseButton').click(function () {
    $('#homeCarousel').carousel('pause');
});

与我的第一点相关,为了使它们在旋转木马中正确显示,您可以使用以下内容设置按钮组的样式 CSS

#carouselButtons {
    margin-left: 100px;
    position: absolute;
    bottom: 0px;
}

在jsFiddle工作演示

为了使这个功能最有意义,您可能希望旋转木马继续移动,即使悬停在它上面(否则在进行游戏选择后,直到您移动鼠标才会再次启动循环行为)。

根据 轮播文件

选项  - 暂停
默认  - “悬停” - 在鼠标中心暂停旋转木马的循环,并在小鼠离开时恢复旋转木马的循环。

相反,请确保在初始化轮播时将其关闭,如下所示:

$('#homeCarousel').carousel({
    interval:2000,
    pause: "false"
});

14
2017-12-16 17:22



感谢对代码的精彩修改,我担心它只适用于第一次点击,第二次点击以及更远,不会触发事件。另外,我意识到它不适用于IE10(即使是jsFiddle示例);它可能是一般的错误吗?再次感谢KyleMit! - Mojgan
什么部分不起作用?在IE,FF和Chrome上,小提琴适用于我。请记住 引导转盘,默认 pause 选项是 "hover",意思是旋转木马在悬停时总会暂停。尝试移动光标,让游戏重新开始工作。或者,试试这个 小提琴 随着 pause: "false" 选项集 - KyleMit
通过将pause设置为false,它已经解决,现在它也在IE中工作。非常感谢KyleMit - Mojgan


答案:


这应该是有效的。我确保您的点击事件按照您的预期触发,因为引导轮播的某些元素可能出现在您的元素上方并阻止点击。

如果您添加以下控件 HTML

<div id="carouselButtons">
    <button id="playButton" type="button" class="btn btn-default btn-xs">
        <span class="glyphicon glyphicon-play"></span>
     </button>
    <button id="pauseButton" type="button" class="btn btn-default btn-xs">
        <span class="glyphicon glyphicon-pause"></span>
    </button>
</div>

然后是以下 JavaScript的 应控制任何帧的开始和停止:

$('#playButton').click(function () {
    $('#homeCarousel').carousel('cycle');
});
$('#pauseButton').click(function () {
    $('#homeCarousel').carousel('pause');
});

与我的第一点相关,为了使它们在旋转木马中正确显示,您可以使用以下内容设置按钮组的样式 CSS

#carouselButtons {
    margin-left: 100px;
    position: absolute;
    bottom: 0px;
}

在jsFiddle工作演示

为了使这个功能最有意义,您可能希望旋转木马继续移动,即使悬停在它上面(否则在进行游戏选择后,直到您移动鼠标才会再次启动循环行为)。

根据 轮播文件

选项  - 暂停
默认  - “悬停” - 在鼠标中心暂停旋转木马的循环,并在小鼠离开时恢复旋转木马的循环。

相反,请确保在初始化轮播时将其关闭,如下所示:

$('#homeCarousel').carousel({
    interval:2000,
    pause: "false"
});

14
2017-12-16 17:22



感谢对代码的精彩修改,我担心它只适用于第一次点击,第二次点击以及更远,不会触发事件。另外,我意识到它不适用于IE10(即使是jsFiddle示例);它可能是一般的错误吗?再次感谢KyleMit! - Mojgan
什么部分不起作用?在IE,FF和Chrome上,小提琴适用于我。请记住 引导转盘,默认 pause 选项是 "hover",意思是旋转木马在悬停时总会暂停。尝试移动光标,让游戏重新开始工作。或者,试试这个 小提琴 随着 pause: "false" 选项集 - KyleMit
通过将pause设置为false,它已经解决,现在它也在IE中工作。非常感谢KyleMit - Mojgan


对于那些想要关闭播放/暂停按钮的人。 jsFiddle示例

使用Javascript:

 $("button").click(function() {
  if ($(this).attr("id") === "pauseButton") {
    $('#homeCarousel').carousel('pause');
    $(this).attr("id", "playButton");
    $("span", this).toggleClass("glyphicon-play glyphicon-pause");
  } else {
    $('#homeCarousel').carousel('cycle');
    $(this).attr("id", "pauseButton");
    $("span", this).toggleClass("glyphicon-pause glyphicon-play");
  }
});

HTML:

<div id="carouselButtons">
    <button id="pauseButton" type="button" class="btn btn-default btn-xs">
      <span class="glyphicon glyphicon-pause"></span>
    </button>
  </div>

0
2018-04-20 04:09



提供的小提琴链接中的暂停按钮不会暂停轮播。但我很欣赏一次只显示一个按钮。我独立地寻找相同的功能,并通过修改KyleMit的小提琴默认播放按钮为完成它 display:none; 并申请 $('#playButton,#pauseButton').toggle(); 两个按钮功能...加上一些其他修改 - mickmackusa


这是我的方法。你可以根据自己的需要设置.pause和.play类的样式,但我只是使用纯文本进行演示:

$('.carousel-control.pause').click(function() {
        var controls = $(this);
        if (controls.hasClass('pause')) {
            controls.text('Resume').removeClass('pause').toggleClass('play');
            $('#myCarousel').carousel('pause');
        } else {
            controls.text('Pause').removeClass('play').toggleClass('pause');
            $('#myCarousel').carousel('cycle');
        }
    });

这是你的雷管

<a class="carousel-control pause" href="javascript:void(0);">Pause</a>

0
2018-04-17 18:48