abdelyazy
@abdelyazy

Почему не работает код jquery?

Есть код
$(".gallery__list").mouseover(function(){
        let thumbnail = event.target.closest('#single_image');

        if (!thumbnail) return;
        showThumbnail(thumbnail.href, thumbnail.title);
        event.preventDefault();

        function showThumbnail(href, title) {
            largeImg.src = href;
            largeImg.alt = title;
        }
    });

И множество элементов html
spoiler
<div class="gallery__list">
                        <a href="images/gallery-img-1.png" class="galleru__item galleru__item-prem" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="" id="largeImg">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery" data-src="images/gallery-img-2.png">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                    </div>
<div class="gallery__list">
                        <a href="images/gallery-img-1.png" class="galleru__item galleru__item-prem" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="" id="largeImg">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery" data-src="images/gallery-img-2.png">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-1.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-1.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                        <a href="images/gallery-img-2.png" class="galleru__item" id="single_image" data-fancybox="gallery">
                            <img src="images/gallery-img-2.png" alt="">
                        </a>
                    </div>

Но если элемент один то все работает
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Как-то так, примерно.
Никогда не используйте повторяющиеся ID. У вас именно с этим проблема. Ну не совсем с этим, но из-за этого вы не разглядели суть.
function showThumbnail($img, href, title) {
    $img.attr('src', href);
    $img.attr('alt', title);
}

$(".gallery__list").each(function($gallery){
    let $largeImg = $gallery.find('.galleru__item-prem');
    $gallery.mouseover(function(event){
        let thumbnail = event.target.closest('.galleru__item');
        if (!thumbnail) return;
        
        showThumbnail($largeImg, thumbnail.href, thumbnail.title);
    });
});


Хотя тут и jquery то не нужен
function showThumbnail(img, href, title) {
    img.src = href;
    img.alt = title;
}

document.querySelectorAll('.gallery__list').forEach(function(gallery){
    const largeImg = gallery.querySelector('.galleru__item-prem');
    if (!largeImg) console.warn('Нет большой картинки');
    gallery.addEventListener('mouseover', function(event){
        const thumbnail = event.target.closest('.galleru__item');
        if (!thumbnail) return;
        
        showThumbnail(largeImg, thumbnail.href, thumbnail.title);
    });
});


UPD
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Вам никто не говорил, что id элементов не должны быть одинаковые? Само название атрибута как бы намекает на это ))
Ответ написан
@StiflerProger
-let thumbnail = event.target.closest('#single_image');
+let thumbnail = $(this).find('#single_image');

и замени id на классы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы