Jquery在播放音频时添加Class在不播放时删除class

时间:2015-11-28 18:28:27

标签: javascript jquery audio

我正在开发一个我正在开发的音频播放器的主控制面板。

在大多数情况下它工作正常,但如果我在播放曲目时播放另一首歌曲,则底部播放按钮将切换为不同步:

JSFiddle:http://jsfiddle.net/jeffd/2fjnmdkb/6/

$(".play").on('click', function () {
     var key = $(this).attr('key');
     EvalSound(this, key);
     var this_play = $(this);
     $(".play").each(function () {
         if ($(this)[0] != this_play[0]) {
             $(this).removeClass("pause");
         }
     });
     $(".playerbottom").toggleClass("pausebottom");
     $(this).toggleClass("pause");
 });
 var thissound = new Audio();
 var currentKey;
 function EvalSound(el, key) {
     thissound.addEventListener('ended', function () {
         // done playing
         $(el).removeClass("pause");
         $(".playerbottom").removeClass("pausebottom");
     });
     if (currentKey !== key) thissound.src = "http://99centbeats.com/1e4cb5f584d055a0992385c1b2155786/" + key + ".mp3";
     currentKey = key;
     if (thissound.paused) thissound.play();
     else thissound.pause();
     //thissound.currentTime = 0;
     currentPlayer = thissound;
 }
$(".volume_slider").slider({
    value  : 75,
    step   : 1,
    range  : 'min',
    min    : 0,
    max    : 100,
    slide  : function(){
        var value = $(".volume_slider").slider("value");
        thissound.volume = (value / 100);
    }
}); 

2 个答案:

答案 0 :(得分:2)

尝试将play事件更改为this

$(".play").on('click', function () {
     var key = $(this).attr('key');
     EvalSound(this, key);
     $(".play").not(this).removeClass("pause");     
     $(this).toggleClass("pause");
     $(this).hasClass("pause") ? $(".playerbottom").addClass("pausebottom") : $(".playerbottom").removeClass("pausebottom");
 });

答案 1 :(得分:1)

您可以使用此代码:

$(".play").on('click', function () {
     var key = $(this).attr('key');
     var this_play = $(this);
     $(".play").each(function () {
         if ($(this)[0] != this_play[0]) {
             $(this).removeClass("pause");
         }
     });
     $(this).toggleClass("pause");
     var player_bottom = $(".playerbottom");
     if (currentKey == key || !player_bottom.hasClass('pausebottom')) {
         player_bottom.toggleClass("pausebottom");
     }
     EvalSound(this, key);
 });

JsFiddle