jquery 如何延迟每个克隆视频的播放
jquery how to delay play of each cloned video
我想制作一个视觉效果,同时多次播放同一个视频,但有一点延迟。第一个视频将在开始时播放,其余视频以级联方式播放,每个延迟 1000,因此最后一个视频将播放克隆视频 x1000 的数量。
但我不能延迟播放每个克隆。只需暂停或同时播放所有这些。我错过了什么?
<body>
<div class="masonry-css" id="gridVideos">
</div>
<script type="text/javascript">
var cloneCount = 1;
var count = 0;
$.fn.multiply = function (numCopies) {
var newElements = this.clone(true, true);
for (var i = 1; i < numCopies; i++) {
count++;
newElements = newElements.add(this.clone(true, true)
.attr('id', 'Videos' + cloneCount++)
.insertAfter($('[id^="gridVideos"]:last'))
);
}
return newElements;
};
var repeVideos = $('<video/>', {
'id': 'myVideo',
'class': 'masonry-css-videos',
'width': '320',
'muted': 'true',
'loop': 'true',
'src': 'videos/AVIDEAlow.webm',
'type': 'video/webm',
});
var repetimos = $('<div/>', {
'id': 'Videos0',
'class': 'masonry-css-item',
});
var todoDivsVideo = repetimos.append(repeVideos);
$('#gridVideos').append(todoDivsVideo.multiply(9));
$('video').trigger('pause');
$('[id^="Videos"]').find('video').each(function(){
setTimeout(function(){$('video').trigger('play');
});
});
jQuery 中 .each()
的第一个参数是当前索引,因此您可以使用 index * 1000
来增加循环中的延迟
第二个参数是当前元素,因此您也可以使用它来代替 video
选择器
$('[id^="Videos"]').find('video').each(function(index, video) {
setTimeout(function() {
$(video).trigger('play');
}, index * 1000)
});
我想制作一个视觉效果,同时多次播放同一个视频,但有一点延迟。第一个视频将在开始时播放,其余视频以级联方式播放,每个延迟 1000,因此最后一个视频将播放克隆视频 x1000 的数量。
但我不能延迟播放每个克隆。只需暂停或同时播放所有这些。我错过了什么?
<body>
<div class="masonry-css" id="gridVideos">
</div>
<script type="text/javascript">
var cloneCount = 1;
var count = 0;
$.fn.multiply = function (numCopies) {
var newElements = this.clone(true, true);
for (var i = 1; i < numCopies; i++) {
count++;
newElements = newElements.add(this.clone(true, true)
.attr('id', 'Videos' + cloneCount++)
.insertAfter($('[id^="gridVideos"]:last'))
);
}
return newElements;
};
var repeVideos = $('<video/>', {
'id': 'myVideo',
'class': 'masonry-css-videos',
'width': '320',
'muted': 'true',
'loop': 'true',
'src': 'videos/AVIDEAlow.webm',
'type': 'video/webm',
});
var repetimos = $('<div/>', {
'id': 'Videos0',
'class': 'masonry-css-item',
});
var todoDivsVideo = repetimos.append(repeVideos);
$('#gridVideos').append(todoDivsVideo.multiply(9));
$('video').trigger('pause');
$('[id^="Videos"]').find('video').each(function(){
setTimeout(function(){$('video').trigger('play');
});
});
jQuery 中 .each()
的第一个参数是当前索引,因此您可以使用 index * 1000
来增加循环中的延迟
第二个参数是当前元素,因此您也可以使用它来代替 video
选择器
$('[id^="Videos"]').find('video').each(function(index, video) {
setTimeout(function() {
$(video).trigger('play');
}, index * 1000)
});