我有一些代码可以正常工作,当单击叠加图像时,该图像将删除图像并允许其相应的视频自动播放。我正在努力的是,如果有多个视频,每个视频都有自己的叠加图像,那么如何使这项工作有效。
以下是指向密码笔的链接:https://codepen.io/NewbCake/pen/qMMQZo
问题是,单击任何覆盖图时,它会删除所有覆盖图并仅播放第一个视频。我如何才能使其分别适用于每个人?我注意到,当我将f = $ f [0]的索引更改为f = $ f [1]时,它将播放第二个视频(甚至单击第一个视频)。如何获取它以选择要单击的索引?
我还想知道使用此功能是否存在任何可预见的缺点...将在移动设备上运行还是会引起问题?
在此先感谢您的帮助!
HTML
<section>
<div class="video-intro">
<div class="image">
<div class="play-button btn"></div>
<a href="javascript:" id="btn_play" class="btn">
<img src="http://placekitten.com/960/540" alt="play video" />
</a>
</div>
<iframe src="https://player.vimeo.com/video/66991893?api=1&title=0&byline=0&portrait=0&color=57c0d4" width="960" height="540" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
</div>
</section>
CSS
section {
display:grid;
grid-template-columns:10vw 500px;
}
/* video intro */
.video-intro {
grid-column: 2 ;
box-shadow:0px 0px 7px #ddd;
margin:0 auto 50px !important;
width:90%;
position:relative;
max-width:960px;
.image {
position:absolute;
top:0;
left:0;
z-index:20;
img {
width:100%;
height:auto;
}
JS
$(function(){
var $parent = $('.video-intro'),
$f = $parent.find('iframe'),
$image = $parent.find('.image'),
f = $f[0],
url = $f.attr('src').split('?')[0];
window.addEventListener('message', function(e){
var d = JSON.parse(e.data);
}, false);
$('.btn').click(function(){
var $t = $(this);
runCommand('play');
$image.hide();
});
function runCommand(cmd){
var data = {method : cmd};
f.contentWindow.postMessage(JSON.stringify(data), url);
}
// fitvids
$('.video-intro').fitVids();
});
答案 0 :(得分:0)
尝试一下:
这将播放相应的视频,如果您单击另一视频,它将暂停当前视频并播放新视频。希望这会有所帮助:)
$(function(){
window.addEventListener('message', function(e){
var d = JSON.parse(e.data);
}, false);
$('.btn').click(function(){
parent_video = $(this).parent().parent();
$('.video-intro').each(function(){
if(!$(parent_video).is($(this))){
var $iframe = $(this).find('iframe');
$iframe[0].src = $iframe[0].src;
$(this).find('.image').show(0);
}
});
var $t = $(this);
var $iframe = $t.parent().parent().find('iframe');
setTimeout(function(){
runCommand('play', $iframe);
}, 200);
$t.parent().fadeOut(200); //hide the .image div
});
function runCommand(cmd, $f){
var data = {method : cmd},
url = $f.attr('src').split('?')[0];
$f[0].contentWindow.postMessage(JSON.stringify(data), url);
}
// fitvids
$('.video-intro').fitVids();
});