Нет атрибута pause
для видео HTML5. Вместо этого вы должны взглянуть на медиа-события и свойства .
В вашем случае это будет означать:
if (!$('#video')[0].paused) {
$('#video')[0].pause();
} else {
$('#video')[0].play();
}
Кстати: поскольку вы звоните $('#video')
довольно часто, возможно, было бы неплохо сохранить это в переменной - таким образом вам не нужно вызывать jQuery-селектор несколько раз. Как:
$video = $('#video'); //from now on just use $video instead of $('#video')
РЕДАКТИРОВАТЬ: Что касается вашего комментария, трудно сказать, не видя элементы управления (HTML и CSS), которые вы используете, но в любом случае вы можете использовать один и тот же обработчик для всех событий, которые вызывают такое же поведение (и так как поведение правильно на pause
, оно должно быть на ended
также, когда связано с тем же обработчиком). Кроме того, в коде, который вы разместили, вы используете removeClass
в конце (где оно, вероятно, должно быть addClass
). Так что это должно работать:
$('#video').bind('play ended', function () { //should trigger once on any play and ended event
$('.playbtn').addClass('pausebtn'); //might also be $('#playbtn') ???
});
$('#video').bind('pause', function () { //should trigger once on every pause event
$('.playbtn').removeClass('pausebtn'); //might also be $('#playbtn') ???
});
Еще один глюк, который я заметил, заключается в том, что вы используете #playbtn
один раз и .playbtn
в другой раз. Убедитесь, что вы обращаетесь к тем же элементам, когда пытаетесь что-то сделать с помощью кнопки Play.