当新视频在页面上滚动到视图时如何更改按钮?

时间:2012-12-26 12:58:30

标签: jquery button video controls

在此页http://kimcolemanprojects.com/djangolive_1.html上有五个视频。

当您点击每个视频时,下一个视频会使用jQuery滚动到视图中。

由于这种jQuery效果,我不得不禁用视频控件。所以我决定在每个视频的左边放一个播放/暂停按钮。

但是,我现在需要一些帮助来制作一个脚本,当每个新视频滚动到视图中时,该脚本会更改按钮。我有一段脚本可以更改标题,因为不同的视频滚动到视图中,也在每个视频的左侧,请参阅下面的脚本。

$(window).load(function(){
// Scroll to titles on click
$('a').on('click', function() {
var target = $(this).attr('href');
$('html,body').animate({
scrollTop: $(target).offset().top
}, 'slow');
return false;
});
// jQuery `inView`-expression
$.extend($.expr[':'], {
inView: function(el) {
var width = $(el).width(),
height = $(el).height(),
offset = $(el).offset(),
vp_dimensions = {
height: $(window).height(),
width: $(window).width()
},
y_offset = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop),
x_offset = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
return (
offset.top < (y_offset + vp_dimensions.height) && offset.left < (x_offset + vp_dimensions.width) && (offset.top + height) > y_offset && (offset.left + width) > x_offset);
}
});
// Change the titles on scroll
$(window).scroll(function() {
$('li').each(function() {
var self = $(this),
title = self.find('video').attr('title');
if (self.is(':inView')) {
$('#title').find('h2').text(title);
}
});
}).scroll();
});

感谢您的时间

安吉拉

1 个答案:

答案 0 :(得分:0)

下面这段代码实现了我想要的功能,它不仅使按钮对应于滚动到视图中的视频,还在滚动视图时暂停视频,当视频播放完毕后滚动下一个视频进入视图并自动播放。感谢jQuerycigar在jQuery论坛上。

$.extend($.expr[':'], { // jQuery `inView`-expression
inView: function (el) {
var width = $(el).width(),
height = $(el).height(),
offset = $(el).offset(),
vp_dimensions = {
height: $(window).height(),
width: $(window).width()
},
y_offset = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop),
x_offset = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
return(
offset.top < (y_offset + vp_dimensions.height) && offset.left < (x_offset + vp_dimensions.width) && (offset.top + height) > y_offset && (offset.left + width) > x_offset);
}
});
var video;
$(function (){
video=$('video:first').get(0)
$('a').on('click', function () {
var target = $(this).attr('href');
$('html,body').animate({
scrollTop: $(target).offset().top
}, 'slow')
return false;
});
$('video').on('ended',function(){
$(this).parents('a').click()
setTimeout(vidplay,1000)
})
});
$(window).scroll(function () {
$('video:not(:inView)').each(function () {
this.pause()
})
video = $('video:inView:last').get(0)
if(video) $('#title').find('h2').text(video.title)
}).scroll();
function vidplay() {
if(video.paused) {
video.play();
$('#play').text("||");
} else {
video.pause();
$('#play').text(">");
}
}
function percent(){
return (video.currentTime/video.duration*100).toFixed(0)+'%'
}
function restart() {
video.currentTime = 0;
}
function skip(value) {
video.currentTime += value;
}