2017-04-07 55 views
1

我有三个播放按钮,一个简单的自定义播放器,以这种方式上市:切换类不工作

<div> 
    <div class="gs-player"> 
    <div id="gs1" onclick="play(309689093)" class="fa fa-3x fa-play"></div> 
    </div> 
    <div class="gs-player"> 
    <div id="gs2" onclick="play(316017522)" class="fa fa-3x fa-play"></div> 
    </div> 
    <div class="gs-player"> 
    <div id="gs3" onclick="play(315363199)" class="fa fa-3x fa-play"></div> 
    </div> 
</div> 

我想这样做,当我点击他们每个人的是:

  1. 删除所有活动类(我用fa-pause
  2. 切换与fa-pausediv我点击

我做了这样:

$(document).ready(function() { 
    $('.fa-play').click(function() { 
     $('.fa-pause').removeClass('fa-pause'); 
     $(this).toggleClass('fa-pause');   
    }); 
}); 

基本上它的工作原理除了切换功能精细,看起来更像是一个addClass代替。如果我再次点击活动的div,它不会删除fa-pause

JSFiddle中的行为更清晰。

另外,有没有办法做到这一点,而不使用框架?

回答

1

您正在移除该类,然后重新打开它。添加.not(this),以避免这种情况。它将确保修改的元素不会是当前被点击的元素。

$(document).ready(function() { 
 
    $('.fa-play').click(function() { 
 
     $('.fa-pause').not(this).removeClass('fa-pause'); 
 
     $(this).toggleClass('fa-pause');   
 
    }); 
 
}); 
 

 
function play() {}; //remove this line, I used this just to avoid error (because we don't have your full code).
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" /> 
 

 
<div> 
 
    <div class="gs-player"> 
 
    <div id="gs1" onclick="play(309689093)" class="fa fa-3x fa-play"></div> 
 
    </div> 
 
    <div class="gs-player"> 
 
    <div id="gs2" onclick="play(316017522)" class="fa fa-3x fa-play"></div> 
 
    </div> 
 
    <div class="gs-player"> 
 
    <div id="gs3" onclick="play(315363199)" class="fa fa-3x fa-play"></div> 
 
    </div> 
 
</div>

0

不要自己做$('.fa-pause').removeClass('fa-pause');,切换是针对提到:

$(document).ready(function() { 
    $('.fa-play').click(function() { 
     $('.fa-pause').not(this).removeClass('fa-pause'); 
     $(this).toggleClass('fa-pause');   
    }); 
});