Эффективность JQuery через цикл - для или для каждого ()
У меня есть раздел клиентского сайта, на котором есть несколько видео Vimeo, которые можно запустить в модальностях Bootstrap, поэтому я работаю над jQuery, который необходим для автоматического воспроизведения видео при запуске модального режима и приостановки его при закрытии модального режима.
Следующий код работает, но я понимаю, что он не очень эффективен и ему не повезло, пытаясь заставить цикл 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 внутри циклов - простой практический пример. Это не самое надежное решение, но оно становится все ближе.
jQuery (документ).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();
});
}
});