我正在尝试使用jQuery绑定play
/ pause
和ended
事件但是存在问题:
当我右键单击视频并选择播放或暂停时,图标会正确更改。当我点击播放按钮时,它会变为暂停,但是如果我单击暂停按钮继续播放视频,它就不会再次播放。
谁能告诉我哪里出错了?
这是我的代码:
var PlayVideo = function () {
if ($('#video').attr('paused') == false) {
$('#video').get(0).pause();
} else {
$('#video').get(0).play();
}
};
$('#playbtn').click(PlayVideo);
$('#video').click(PlayVideo);
$('#video').bind('play', function () {
$('.playbtn').addClass('pausebtn');
});
$('#video').bind('pause', function () {
$('.playbtn').removeClass('pausebtn');
});
$('#video').bind('ended', function () {
$('.playbtn').removeClass('pausebtn');
});
CSS:
.playbtn {
display: block;
width: 32px;
height: 32px;
margin-left: 10px;
background: url('../images/play.png') no-repeat;
opacity: 0.7;
-moz-transition: all 0.2s ease-in-out; /* Firefox */
-webkit-transition: all 0.2s ease-in-out; /* Safari and Chrome */
-o-transition: all 0.2s ease-in-out; /* Opera */
transition: all 0.2s ease-in-out;
}
.pausebtn {
display: block;
width: 32px;
height: 32px;
margin-left: 10px;
background: url('../images/pause.png') no-repeat;
opacity: 0.7;
-moz-transition: all 0.2s ease-in-out; /* Firefox */
-webkit-transition: all 0.2s ease-in-out; /* Safari and Chrome */
-o-transition: all 0.2s ease-in-out; /* Opera */
transition: all 0.2s ease-in-out;
}
答案 0 :(得分:11)
HTML5视频没有pause
- 属性。相反,您应该查看 media events and properties 。
在你的情况下,这意味着:
if (!$('#video')[0].paused) {
$('#video')[0].pause();
} else {
$('#video')[0].play();
}
BTW:由于你经常调用$('#video')
,所以将它存储在变量中可能是个好主意 - 这样你就不必多次调用jQuery-selector。像:
$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
再次使用{{1}}。在尝试使用Play按钮执行某些操作时,请确保您在此处指的是相同的项目。