Я хочу понять, почему этот код работает только с первым onclick:
HTML:
<div id="TheCarouselPlay">
<button type="button" class="btn btn-warning btn-xs pause">
<i class="fa fa-pause"></i>
</button>
</div>
ЯШ:
/* 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');
});
Это можно сделать с помощью одного обработчика щелчка, проверяя текущее состояние, на основе которого в данный момент находится кнопка:
$('#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');
}
});
Вот скрипка: http://jsfiddle.net/gW2pn/
Вы должны использовать 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');
});
Поскольку button.play не существует, когда вы определили событие click.
Вместо этого попробуйте использовать обработчики событий:
/* 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/
setTimeout будет делать трюк. Вот пример:
setTimeout(function(){
$(this).removeClass('play').addClass('pause');
}, 100);