В нижеприведенном фрагменте jquery я хочу заменить некоторый html в каждом элементе, который соответствует селектору a.thumbs
(он получает миниатюру с youtube).Почему мой селектор jquery игнорируется?
Проблема в том, что она не работает так, как я ожидал. Если у всех a
элементов на странице есть класс «thumbs», он отлично работает (каждому элементу a
дается мой html). Но если есть один или несколько элементов a
, у которых есть другой класс, этот элемент получает html, а не элемент a
с большими пальцами класса.
Я не могу понять, почему. Пожалуйста помоги :-). Я, должно быть, неправильно понял, как работает .each().
jQuery(function($) {
$(document).ready(function(){
// Youtube
var $youtube;
var video_id;
$("a.thumbs").each(function (index, value){
$youtube = $('a[href^="http://www.youtube.com"], a[href^="http://youtu.be"], a[href^="http://youtube.com"]');
video_id = $youtube[index].href.split('v=')[1];
console.log(video_id);
$youtube[index].innerHTML = '<div class=\"youtube_container\"><div class=\"youtube_thumb image\"><img src=\"http://img.youtube.com/vi/'.concat(video_id).concat('/1.jpg\"></div><div class=\"youtube_overlay image\"><img src=\"/sites/all/themes/mycompany/images/video-overlay.png\"></div></div>');
});
});
});
Отредактировано: Большое спасибо за предложения. Никто из них не работал, но после ваших замечаний я начинаю понимать лучше. Итак, вот пример html. Цель состоит в том, чтобы извлечь и показать миниатюру youtube в html, которая содержит только простую ссылку на видео YouTube. Так что этот HTML:
<p><a class="thumbs" href="http://www.youtube.com/watch?v=Vvxxxx123">random text</a></p>
должен превратиться в это:
<a class="thumbs" href="http://www.youtube.com/watch?v=Vvxxxx123">
<div class="youtube_container">
<div class="youtube_thumb image">
<img src="http://img.youtube.com/vi/Vvxxxx123/1.jpg">
</div>
<div class="youtube_overlay image">
<img src="/sites/all/themes/mycompany/images/video-overlay.png">
</div>
</div>
</a>
Мой код работает, если есть только одна ссылка, или если все ссылки имеют одинаковый класс пальцы.
Извините за этот длительный вопрос :-), но я, наконец, получил работу благодаря вашим предложениям. Это окончательный рабочий код:
jQuery(function($) {
$(document).ready(function(){
// Youtube
$('a.thumbs[href^="http://www.youtube.com"], a.thumbs[href^="http://youtu.be"],a.thumbs[href^="http://youtube.com"]').each(function (index, value){
console.log(value);
var video_id = this.href.split('v=')[1];
console.log(video_id);
this.innerHTML = '<div class=\"youtube_container\"><div class=\"youtube_thumb image\"><img src=\"http://img.youtube.com/vi/'.concat(video_id).concat('/1.jpg\"></div><div class=\"youtube_overlay image\"><img src=\"/sites/all/themes/mycompany/images/video-overlay.png\"></div></div>');
});
});
});
'$ YouTube = $ ('а [HREF = "http://www.youtube.com"], а [HREF = "http://youtu.be"], а [HREF^= "http://youtube.com"] '); 'будет возвращаться одинаково каждый раз! –
Показать свой HTML тоже ... –
Я все еще немного дрожа на *, что именно * вы пытаетесь выполнить, но я думаю, что причина, по которой вы ошибочно выбираете неправильные элементы, состоит в том, что переменная '$ youtube' почти * ничего не связано с 'a.thumbs' в вашем коде –