как записать переменную в append()

113
09 октября 2019, 22:20

если переменыу в виде

var vid1 = ('<div  class="vidd"><iframe  width="560" height="315" src="https://www.youtube.com/embed/PKRSCG7aIsM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>');
var vid2 = ('<div  class="vidd"><iframe  width="560" height="315" src="https://www.youtube.com/embed/zAY0FjxsjZY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>');
var vid3 = ('<div  class="vidd"><iframe  width="560" height="315" src="https://www.youtube.com/embed/meGsAvHRma0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>');
var vid4 = ('<div  class="vidd"><iframe  width="560" height="315" src="https://www.youtube.com/embed/TzhbdV5iKgM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>');
var vid5 = ('<div  class="vidd"><iframe  width="560" height="315" src="https://www.youtube.com/embed/TzhbdV5iKgM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>');
var vid6 = ('<div  class="vidd"><iframe  width="560" height="315" src="https://www.youtube.com/embed/TzhbdV5iKgM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>');

то как путем перебора их записать

jQuery('.mvid').append(?????????);

конструкция такая

 function video(num) {
[1,2,3,4,5,6].forEach(function(el) { 
if (el === num) { 
jQuery('.mvid').append(vid + el);
}
});
}
jQuery('.vid1').click(function() {video(1)});
jQuery('.vid2').click(function() {video(2)});
jQuery('.vid3').click(function() {video(3)});
jQuery('.vid4').click(function() {video(4)});
jQuery('.vid5').click(function() {video(5)});
jQuery('.vid6').click(function() {video(6)});

спасибо

Answer 1

Почему-то мне кажется, что автор пытается реализовать некий "видео-плеер с выбором серий", если оно так и есть, то почему бы не переделать "механику"?

Предлагаю следующий вариант, который использует массив с ссылками на "серии".
Такой вариант проще и можно "расширить функционал".

// Массив с ссылками на видео 
let videoArr = [ 
  'https://www.youtube.com/embed/PKRSCG7aIsM', 
  'https://www.youtube.com/embed/zAY0FjxsjZY', 
  'https://www.youtube.com/embed/meGsAvHRma0', 
  'https://www.youtube.com/embed/TzhbdV5iKgM', 
  'https://www.youtube.com/embed/TzhbdV5iKgM', 
  'https://www.youtube.com/embed/TzhbdV5iKgM' 
]; 
 
// При загрузке страницы - грузим видосы 
function ReadyVideo() { 
  $.each(videoArr, function(i){ 
    // Создаём список видео 
    $('.video-block .list').append('<div class="item" data-videolink="'+videoArr[i]+'">'+(i+1)+'</div>'); 
    if(i==0) { 
      // Первому вешаем класс active 
      $('.video-block').find('.list .item').addClass('active'); 
      // И "вставляем" ссылку в фрейм 
      $('.video-block').find('.frame iframe').attr('src', videoArr[i]); 
    } 
  }); 
} 
ReadyVideo(); 
 
// Ну и переключение "серий" 
$('.video-block .list').on('click', '.item', function(){ 
  // "отключим" переключение активной "серии" 
  if(!$(this).hasClass('active')) { 
    // Определяем ссылку, которую храним в "кнопке" при загрузке страницы 
    let href = $(this).data('videolink'); 
    // Ищем активную "серию" и удаляем с неё класс active 
    $('.video-block .list').find('.item.active').removeClass('active'); 
    // Ну и выбранной "серии" вешаем класс active 
    $(this).addClass('active'); 
    // А дальше обновляем ссылку в самом фрейме 
    $('.video-block .frame iframe').attr('src', href); 
  } 
});
.video-block { 
  display: block; 
  width: 300px; 
  height: 270px; 
} 
 
.video-block .list { 
  display: block; 
  width: 100%; 
  height: 20px; 
  overflow: auto hidden; 
} 
 
.video-block .list .item { 
  display: inline-block; 
  float: left; 
  color: #fff; 
  min-width: 20px; 
  height: 20px; 
  padding: 0 3px; 
  background: gray; 
  text-align: center; 
  box-sizing: border-box; 
  cursor: pointer; 
} 
 
.video-block .list .item:not(:last-child) { 
  margin-right: 3px; 
} 
 
.video-block .list .item.active { 
  background: black; 
  color: white; 
} 
 
.video-block .frame { 
  display: block; 
  width: 100%; 
  height: 250px; 
} 
 
.video-block .frame { 
  display: block; 
  width: 100%; 
  height: 100%; 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="video-block"> 
  <div class="list"></div> 
  <div class="frame"> 
    <iframe src=""></iframe> 
  </div> 
</div>

Если мой ответ "ушёл" от темы автора, то переформулируйте вопрос.. Ну или отпишитесь в комменты.

READ ALSO
Не загружать повторно контент в AJAX

Не загружать повторно контент в AJAX

Я написал код, который "догружает" мне недостоющий контент при нажатии кнопки:

112
Реализовать карусель [закрыт]

Реализовать карусель [закрыт]

Необходимо реализовать карусель подобным образомМожет у кого-то есть уже готовый пример

98
Помощь в переводе кода с С++ на С#

Помощь в переводе кода с С++ на С#

Возникла проблема в том, что нужно создать программу с интерфейсом пользователя, так как мне удобнее сделать это в Windows Forms, нужен перевести...

91