2015-07-14 2 views
0

У меня есть много видео каждый под слайдером. Когда воспроизводится определенное видео и пользователь щелкает другим слайдером, предыдущее видео должно прекратить воспроизведение. У меня есть код, который работает правильно.Итерирующий массив с jquery каждый

$('#slidername1').on('hidden.bs.collapse', function() { 
    $('#video1').get(0).pause(); 
}) 
$('#slidername2').on('hidden.bs.collapse', function() { 
    $('#video2').get(0).pause(); 
}) 

и т.д. и т.п.

Теперь я хочу использовать массив для слайдеров и видео-х и перебирать с, например, jquery каждый. Я пробовал несколько вариантов, но до сих пор я не справлялся. Названия слайдера - это конкретные имена видео, чтобы они были распознаны. Любое рабочее решение?

+2

вы можете поделиться HTML образец ... то есть один слайдер и видео –

+0

я бы, вероятно, сделать это по-другому: добавить класс к видео curently играется так, что вы можете запускать его при каждом запуске другого видео, приостановить его и удалить класс. Это предполагает, что, конечно, у вас нет другого способа настроить это видео (переменная js или любое другое свойство, которое вы можете использовать) –

ответ

0

Не использовать .each. Дайте всем ползункам класс, например. class="slider" и привязать к $(".slider").

Затем введите идентификатор соответствующего видео в атрибут data-XXX.

<div id="slidername1" class="slider" data-video="video1">...</div> 

Тогда JS может быть:

$(".slider").on('hidden.bs.collapse', function() { 
    $('#' + $(this).data('video')).get(0).pause(); 
}); 
0

Я думаю, что вы ищете один обработчик для всех ползунков, а индекс в скользящем идентификатор и идентификатор видео одинаковы в этом случае,

Одним из решений может быть, чтобы добавить общий класс (как slidername - потому что лучше, чем с помощью селектора префикса атрибута для id) для всех элементов слайдера

$('.slidername').on('hidden.bs.collapse', function() { 
    $('#video' + this.id.replace('slidername', '')).get(0).pause(); 
}) 
0

Спасибо за ответы, я также проверю их. Я нашел решение сам раньше:

var arr = [ "videoname1", "videoname2", "videoname3", "...", "..." ]; 

jQuery.each(arr, function(i, val) { 
    $('#' + val).on('hidden.bs.collapse', function() { 
    $('#video' + (i + 1)).get(0).pause(); 
}); 
});