使用 Jquery css 按下时重置类

Posted

技术标签:

【中文标题】使用 Jquery css 按下时重置类【英文标题】:Reset class when pressed using Jquery css 【发布时间】:2015-09-21 04:08:39 【问题描述】:

我正在开发一种音频播放器,该播放器可防止用户右键单击将目标另存为...,同时还使用 Jquery 隐藏文件路径。它还只允许一次播放一种声音。

到目前为止,一切正常,除了单击当前播放的声音时,该类不会重置为播放(绿色)

到目前为止,Jsfiddle: http://jsfiddle.net/pt3cx1eo/12/

jQuery:

     $(".play").on('click',function()
         var key = $(this).attr('key');     
         EvalSound(key);
         $(".play").removeClass("pause"); // somewhere here is where it needs to be changed / fixed I believe 
         $( this ).toggleClass( "pause" );
     );

    var thissound = new Audio();
    var currentKey;
        function EvalSound(key) 



       if(currentKey !== key)
         thissound.src = "http://designlab360.org/fhi/splash/dev2/audio/" + key + ".mp3";      
         currentKey = key;

         if (thissound.paused)
                    thissound.play();
            else
                thissound.pause();
                thissound.currentTime = 0;
                 currentPlayer = thissound;




        

CSS:

.play

color:green;    


.pause


color:red;  

HTML:

<p><span class="play" key="wash-song1_2">Play</span></p>    
<p><span class="play" key="wash-song2_2">Play</span></p>    
<p><span class="play" key="wash-song3_2">Play</span></p> 

【问题讨论】:

【参考方案1】:

问题在于,在切换相关点击元素的暂停类之前,您总是从每个具有播放类的元素中删除暂停类。

我已对其进行了更改,以便您只删除所有不是被点击元素的其他元素。

例子:

$(".play").on('click',function()
     var key = $(this).attr('key');     
     EvalSound(key);
     var this_play = $(this);
     $(".play").each(function() 
         if ($(this)[0] != this_play[0]) 
             $(this).removeClass("pause");
         
     );
     $( this ).toggleClass( "pause" );
 );

在这里工作:http://jsfiddle.net/wyfjdgyb/1/

【讨论】:

以上是关于使用 Jquery css 按下时重置类的主要内容,如果未能解决你的问题,请参考以下文章

鼠标按下时CSS光标更改不起作用

在第二次按下时更改标签栏按钮的行为

使用 jQuery 重置多阶段表单

使用 jQuery 重置多阶段表单

SwiftUI 确认按钮 - 在任何其他视图交互时重置状态

按键被按下时如何增加速度变量?