嗨,我正在尝试禁用setInterval,我已经做过多次无法再次启用它的操作,并且"mute"按钮的类没有更改,有人可以向我指出正确的方向吗,这是我的代码

HTML:

<a href="#" class="MuteOff">button</a>



  按键:


$('.MuteOn').on('click tap touch', function() {
$('.MuteOn').removeClass("MuteOn").addClass("MuteOff"); //the class changes
clearInterval(MyTimer);
 });

$('.MuteOff').on('click tap touch', function() {
$('.MuteOff').removeClass("MuteOff").addClass("MuteOn"); //the class doesn't change back to MuteOn
MyTimer = setInterval(Checker, 100); //doesn't work
 });



  功能:


var MyTimer = setInterval(Checker, 100);
 function Checker(){

if ($("body").hasClass("fp-viewing-1")) {
            audio1.play();
            }
           else {
   audio1.pause();
   audio1.currentTime = 0;
            }

if ($("body").hasClass("fp-viewing-2")) {
            audio2.play();
            }
           else {
   audio2.pause();
   audio2.currentTime = 0;
            }

if ($("body").hasClass("fp-viewing-3")) {
            audio3.play();
            }
           else {
   audio3.pause();
   audio3.currentTime = 0;
            }
}


感谢您的任何帮助

最佳答案

我将为静音按钮添加一个通用类,然后单击该类,检查MuteOn / MuteOff类(或使用布尔值),然后执行所需的操作。

您的MuteOff单击不起作用,因为加载时不存在MuteOff元素。

在标记中设置MuteOn / Off

的HTML

<a href="#" class="mute-button MuteOff">button</a>


JS

$('.mute-button').on('click tap touch', function() {
    var $this = $(this);

    if( $this.hasClass("MuteOn") ) {
         // do mute off stuff
         $this.removeClass("MuteOn").addClass("MuteOff");
         clearInterval(MyTimer);
    } else {
         // do mute on stuff
         $this.removeClass("MuteOff").addClass("MuteOn");
         MyTimer = setInterval(Checker, 100);
    }
});


您也可以使用事件委托方式(如@Santi所述),但是现在上面的内容可能更容易理解。

Direct vs. Delegated - jQuery .on()

07-28 11:58