Эффективность 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();
    });
}

});

0 ответов

Другие вопросы по тегам