jQuery — перенос динамически загружаемого изображения

#jquery

#jquery

Вопрос:

Я пытаюсь обернуть динамически загружаемое изображение тегом link:

         var img = new Image();
        slideData[slide].imgData = img; 
        $(img).load(function () {
            $(this).css('display','none');
            $(this).wrap("<a></a>");
            slidesLoaded  ;
        }).attr({src:mediaURL slideData[slide].image, alt:slideData[slide].title});
  

Похоже, это не работает? Когда я делаю это:

 $(slideData[0].imgData).appendTo('body').fadeIn()
  

Здесь нет тегов a, только изображение.

Возможно ли это?

Комментарии:

1. Когда выполняется этот скрипт? Включено .ready() ?..

Ответ №1:

Это потому, что вы сохранили <img> элемент в slideData[slide].imgData , а не элемент-оболочку <a> . Попробуйте:

 $(slideData[0].imgData.parentNode).appendTo('body').fadeIn();
  

Ответ №2:

Когда вы переносите элемент, это не меняет элементы, имеющиеся в вашем наборе jQuery.

Кроме того, когда вы вставляете элемент где-нибудь в документе (используя .append , .prepend и т.д.), Это удаляет элемент из его текущей позиции и помещает его туда, где вы сказали.

Итак, что происходит, так это то, что вы помещаете свое изображение в <a> тег, а затем немедленно удаляете его снова, чтобы поместить в тело. <a> Тег никогда не добавляется к телу. Очевидно, что решение заключается в добавлении <a> вместо изображения.

 $(img).load(function () {
    $("<a></a>")
        .append($(this).hide())
        .appendTo(document.body);
});