2013-05-06 4 views
0

В ходе некоторых исследований я выяснил способ отображения моего собственного эскиза, который нацелен на видео с YouTube, когда он щелкнут. Проблема, с которой я сталкиваюсь, заключается в том, что при нажатии на другое видео на странице начинают воспроизводиться оба миниатюры, а не только та, что они нацелены, так как они используют одни и те же классы. В jQuery я попытался настроить таргетинг только на .image, которое кликает, используя это и используя ближайших, родительских и родных братьев и сестер. Я могу просто напечатать их неправильно, но, будучи новичком, у меня возникают проблемы с этим.Изображение заполнителя для нескольких видеороликов youtube

HTML

<div class="youtube" style="display:none;"> 
    <iframe width="382" height="262" src="" wmode="transparent" frameborder="0" allowfullscreen></iframe> 
</div> 
<img src="img/example.jpg" width="382" height="262" class="image" /> 

JQuery

$('.image').click(function() { 
    $(this).hide(); 
    $('.youtube').show().find("iframe").attr("src","videourl?autoplay=1"); 
}); 
+0

Это потому, что вы используете класс '.youtube' вместо уникальных идентификаторов, таких как' # youtube1' '# youtube2'. '.youtube' повлияет на всех с этим классом. –

+0

Я мог бы использовать уникальные идентификаторы, однако, когда есть 100 видео, которые не кажутся логичными. Лучше всего использовать классы. – James

+0

Дайте вашему образу идентификатор, и вам не придется дублировать код ... '$ ('. Image'). Click (function() {var ID = $ (this) .val(); ... $ ('# youtube' + ID) .children ... ' –

ответ

0
$('.image').click(function() { 
    startvideo = $(this).prev(); 
    $(this).hide(); 
    startvideo.show().find("iframe").attr("src","videourl?autoplay=1"); 
}); 

это займет предыдущий элемент и перед нашим <img class=".image"> есть <div class="youtube">
http://jsfiddle.net/6uhyM/

<img src="path/to/image.jpg" data-videourl="http://www.youtube.com/..."> 

$('.image').click(function() { 
     url = $(this).data("videourl") 
     startvideo = $(this).prev(); 
     $(this).hide(); 
     startvideo.show().find("iframe").attr("src",url); 
    }); 
+0

Это отлично работает и, похоже, совпадает с ответом reikyoushin, но с переменная startvideo сохраняет ее немного более жестко в коде. Тот же вопрос по-прежнему применяется после этого, но вот как я могу изменить src каждого изображения iFrame? – James

+0

использовать атрибут данных;) – mtt

+0

Спасибо за помощь! – James

0

это не работает?

$('.image').click(function() { 
    $(this).hide(); 
    var iframe = $(this).prev().show().find("iframe"); 
    iframe.attr("src",iframe.data(url)); 
}); 

Примечание: вам нужен <img class="image" /> следовать <div class="youtube"> сразу .. как в вашем примере .. поэтому несколько экземпляров будет:

<div class="youtube" style="display:none;"> 
    <iframe width="382" height="262" src="" data-url="url-1" wmode="transparent" frameborder="0" allowfullscreen></iframe> 
</div> 
<img src="img/example.jpg" width="382" height="262" class="image" /> 

<div class="youtube" style="display:none;"> 
    <iframe width="382" height="262" src="" data-url="url-2" wmode="transparent" frameborder="0" allowfullscreen></iframe> 
</div> 
<img src="img/example.jpg" width="382" height="262" class="image" /> 

<div class="youtube" style="display:none;"> 
    <iframe width="382" height="262" src="" data-url="url-3" wmode="transparent" frameborder="0" allowfullscreen></iframe> 
</div> 
<img src="img/example.jpg" width="382" height="262" class="image" /> 
+0

Это работает для меня, вопрос в том, как установить уникальный URL-адрес YouTube для каждого изображения? – James

+0

с использованием пользовательских данных HTML5, [см. Здесь] (http://html5doctor.com/html5-custom-data-attributes/), пример обновлен, чтобы отразить изменения. – reikyoushin

+0

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

0

Почему бы не просто держать сцепление на $(this)?

$('.image').click(function() { 
    $(this) 
     .hide() 
     .prev() 
     .show() 
     .find("iframe") 
     .attr("src","videourl?autoplay=1"); 
}); 
0
<img id="1" ... class="image" /> 
<img id="2" ... class="image" /> 

$('.image').click(function() { 
    var ID = $(this).attr('id'); 
    // Now you know what Video to play etc... 
}); 
Смежные вопросы