#jquery
#jquery
Вопрос:
У меня есть 2 видео, которые я показываю на странице. Onload
, оба видео скрыты, и отображается просто плакат. При нажатии одной из кнопок воспроизводится видео. Какое видео определяется некоторыми вложенными (скрытыми) данными в кнопке.
Я храню свои видео в переменной следующим образом:
var video_1 = '<video width="840" height="472" controls autoplay class="video_1">'
'<source src="/mov/video1.mp4" type="video/mp4" />'
'<source src="/mov/video1.webm" type="video/webm" /></video>';
var video_2 = '<video width="840" height="472" controls autoplay class="video_2">'
'<source src="/mov/video2.mp4" type="video/mp4" />'
'<source src="/mov/video2.webm" type="video/webm" /></video>';
И мой jquery для этого выглядит так:
$('#video_selection_wrap .play_wrap').live('click',function(){
// get the nested data from the button
var video = $(this).children('.data').text();
// hide the poster
$('.poster').fadeOut(function(){
$('#main-movie').empty();
switch(video) {
case 'video_1':
video_play = video_1;
break;
case 'video_2':
video_play = video_2;
break;
}
// load the appropriate video_play into the movie box
$('#main-movie').html(video_play).show();
});
});
Приведенный выше код отлично подходит для первого видео, которое я нажимаю. Однако я надеялся, что если я нажму на другую кнопку, это приведет к опустошению контейнера фильма и загрузке другого видео — это не так.
Вы видите проблему?
Я думаю, это как-то связано с «скрыть плакат». Поскольку он скрыт в первый раз, во второй раз этого не fadeOut
происходит, и поэтому он не выполняет какой-либо код в своей функции. Так ли это работает?
Редактировать: вот рабочий jsfiddle проблемы http://jsfiddle.net/RrC2u /
Комментарии:
1. Ваши
var video_#
переменные объявляются без закрытия переменной и перехода к следующей строке, чего вы не можете сделать в Javascript. (См jsfiddle.net/mZneB , где в консоли Firefox / Chrome вы не увидите ошибок.)2. Ах .. черт возьми, извините — на самом деле я поместил эти пробелы здесь только для удобства чтения, и в моем коде все это в одной строке. Мне было интересно, как сделать то, что вы сделали, чтобы я мог сделать код более читаемым.
3. Хорошо, полезно знать. Обратите внимание, вы пропустили
'
в конце первой строки и во второй строке для каждого …;)
. Спасибо за попытку отформатировать ваш код для удобства чтения, это действительно помогает.:)
4. Теперь я решил проблему jsfiddle.net/RrC2u
5.Вам нужно сделать пути в
VIDEO
SOURCE
тегах абсолютными, а не относительными.
Ответ №1:
Проблема в том, что ваш <div id="main-movie">
элемент неправильно закрыт:
<div id="movie-selection-wrap">
<div id="main-movie"> <!-- not closed -->
<div class="poster"></div>
</div>
Его закрытие устраняет вашу проблему:
<div id="movie-selection-wrap">
<div id="main-movie"></div>
<div class="poster"></div>
</div>
Обновленная скрипка здесь.