一个div两个功能jquery

One div two functions in jquery

我已经查看了所有内容,但到目前为止还没有。我卡住了。

我有一个 html 音频元素,我想用 div 控制它。当我点击 div 时它播放音乐,但我需要的是当我再次点击它时停止播放但不知道如何。

这是音频标签。

<audio class="audioplayer" preload="none" style="display: none;" >
   <source  src="audio/ocean.mp3" type="audio/mpeg">
</audio>

这是jquery用div(#ocean)控制游戏。

$('#ocean').click(function() {
          if ('.audioDemo'.paused == false) {
              $(".audioDemo").trigger('pause');
          } else {
              $(".audioDemo").trigger('play');
          }
        });

        function stopAudio(){
            $(".audioDemo").trigger('pause'); //pause playing
            $(".audioDemo").prop("currentTime",0); //set play time to 0
        }

我已经编写了停止函数并且它可以工作,但前提是我将它安装在另一个 div 上。我试过那个 .paused 但它不起作用。

如何使用与播放和停止相同的 div?

谢谢

字符串没有 pause 属性,所以检查 '.audioDemo'.pause 不起作用。您需要检查普通 HTMLAudioElement 对象 pause 属性。

所以在 jQuery 的帮助下,你 select $(".audioDemo") jQuery 对象集合,从那里你得到原始 HTML 元素作为第一个元素此系列中的:

$('#ocean').click(function () {
    if ($(".audioDemo")[0].paused == false) {
        $(".audioDemo").trigger('pause');
    } else {
        $(".audioDemo").trigger('play');
    }
});

或者稍微优化一下代码:

$('#ocean').click(function () {
    var $audioObj = $(".audioDemo");
    $audioObj.trigger(!$audioObj[0].paused ? 'pause' : 'play');
});

function stopAudio() {
    $(".audioDemo").trigger('pause').prop("currentTime", 0);
}

考虑以下代码:

$('#ocean').click(function () {
    if ($(".audioDemo").get(0).paused == false) {
        $(".audioDemo").trigger('pause');
    } else {
        $(".audioDemo").trigger('play');
    }
});

选择索引元素时可以使用以下方法:

$("#element")[index]
$("#element").get(index)
$("#element").eq(index)

Demonstration

Note: '.audioDemo'.pause is incorrect for checking audio is paused or not. Means you can't access audio Object like this. If you want to do so use $('element').


添加了停止功能:

$('#stop').click(function(){
    $(".audioDemo").trigger('pause'); //pause playing
    $(".audioDemo").prop("currentTime",0); //set play time to 0
});

Updated Demo