我想了解为什么此代码仅适用于第一个onclick:
HTML:
<div id="TheCarouselPlay">
<button type="button" class="btn btn-warning btn-xs pause">
<i class="fa fa-pause"></i>
</button>
</div>
JS:
/* pause & play */
$('#TheCarouselPlay button.pause').click(function () {
$('#TheCarouselPlay i').removeClass('fa-pause').addClass('fa-play');
$(this).removeClass('pause').addClass('play');
});
$('#TheCarouselPlay button.play').click(function () {
$('#TheCarouselPlay i').removeClass('fa-play').addClass('fa-pause');
$(this).removeClass('play').addClass('pause');
});
答案 0 :(得分:2)
这可以通过一个按钮单击处理程序来完成,根据按钮当前具有的类来检查当前状态:
$('#TheCarouselPlay button').click(function () {
if($(this).hasClass('play')){
$('#TheCarouselPlay i').removeClass('fa-play').addClass('fa-pause');
$(this).removeClass('play').addClass('pause');
} else{
$('#TheCarouselPlay i').removeClass('fa-pause').addClass('fa-play');
$(this).removeClass('pause').addClass('play');
}
});
答案 1 :(得分:1)
尝试使用事件处理程序:
/* pause & play */
$('#TheCarouselPlay').on('click', 'button.pause', function () {
$('#TheCarouselPlay i').removeClass('fa-pause').addClass('fa-play');
$(this).removeClass('pause').addClass('play');
});
$('#TheCarouselPlay').on('click', 'button.play', function () {
$('#TheCarouselPlay i').removeClass('fa-play').addClass('fa-pause');
$(this).removeClass('play').addClass('pause');
});
这是新的小提琴: http://jsfiddle.net/xe79K/
答案 2 :(得分:1)
你必须使用on()
/* pause & play */
$('#TheCarouselPlay').on('click','button.pause',function () {
$('#TheCarouselPlay i').removeClass('fa-pause').addClass('fa-play');
$(this).removeClass('pause').addClass('play');
});
$('#TheCarouselPlay').on('click','button.play',function () {
$('#TheCarouselPlay i').removeClass('fa-play').addClass('fa-pause');
$(this).removeClass('play').addClass('pause');
});
因为在定义click事件时button.play不存在。
答案 3 :(得分:0)
setTimeout函数可以解决这个问题。 这是一个例子:
setTimeout(function(){
$(this).removeClass('play').addClass('pause');
}, 100);