我有一个客户端网站的一部分,其中有多个Vimeo视频可以在Bootstrap模式中启动,所以我正在研究jQuery需要在其模式启动时自动播放视频,并在它出现时将其暂停。 s模态已关闭。
以下代码有效,但我意识到它效率不高,并且没有任何运气试图让for循环工作。如果有人能够教我如何钓鱼"在这里,我将来会更加高效。
var idPlayer0 = new Vimeo.Player('player_0');
jQuery('#modal-0').on('shown.bs.modal', function (e) {
idPlayer0.play();
});
jQuery('#modal-0').on('hidden.bs.modal', function (e) {
idPlayer0.pause();
});
// And do it again...
var idPlayer1 = new Vimeo.Player('player_1');
jQuery('#modal-1').on('shown.bs.modal', function (e) {
idPlayer1.play();
});
jQuery('#modal-1').on('hidden.bs.modal', function (e) {
idPlayer1.pause();
});
// And so on...
我尝试过以下无济于事......
// get total number of iframes on page
var iframes = document.getElementsByTagName('iframe');
var idPlayer = [];
for (var i = 0; i <= iframes; i++) {
idPlayer[i] = new Vimeo.Player('player_' + i);
jQuery('#modal-' + i).on('shown.bs.modal', function (e) {
idPlayer[i].play();
});
jQuery('#modal-' + i).on('hidden.bs.modal', function (e) {
idPlayer[i].pause();
});
}
非常感谢任何帮助。谢谢!
在@ryan和JavaScript closure inside loops – simple practical example的帮助下,使用以下内容工作。它不是最强大的解决方案,但它越来越近了。
jQuery(document).ready(function(){
// get total number of iframes on page
var iframes = document.getElementsByTagName('iframe').length;
var idPlayer = [];
for (let i = 0; i < iframes; i++) {
idPlayer[i] = new Vimeo.Player(document.getElementById("player_"+[i]));
jQuery('#modal-' + i).on('shown.bs.modal', function (e) {
idPlayer[i].play();
});
jQuery('#modal-' + i).on('hidden.bs.modal', function (e) {
idPlayer[i].pause();
});
}
});