Получить parentNode tagName

Я не могу получить parentNode.tagName из этого кода и добавить стиль li тег.

// path to catalog images
var img = $('.catalog ul li > img');
for (i = 0; i < img.length; i++) {
    var pic_real_width;
    // Make in memory copy of image to avoid css issues
    $("<img/>").attr("src", $(img[i]).attr("src")).load(function () {
        pic_real_width = this.width;

        if (pic_real_width > 500) {
            // this part of code not work
            var imageParent = this.parenNode.tagName = 'li';
            imageParent.style.width = '50%';
        }
    });
}

1 ответ

Решение

У тебя есть parenNode вместо parentNodeи вы, похоже, присваиваете это свойство, которое доступно только для чтения.

    // ---------------------v             v---assignment won't work
var imageParent = this.parentNode.tagName = 'li';

Если вы просто хотели родителя, нет причин возиться с .tagName,

var imageParent = this.parentNode;
imageParent.style.width = '50%';

Кроме того, я не вижу, где вы добавляете новый <img> в ДОМ. Если он не добавлен, у него не будет родителя.

Может быть, вы хотели получить родителя оригинального изображения. Для этого каждый load() обработчик должен будет закрыть текущий i или же img, Ты можешь использовать .each() чтобы сделать это.

$('.catalog ul li > img')
    .each(function(i, img) {
        var pic_real_width;

        $("<img/>").attr("src", $(img).attr("src")).load(function () {
            pic_real_width = this.width;

            if (pic_real_width > 500) {
                var imageParent = img.parentNode;
                imageParent.style.width = '50%';
            }
        });
    })
Другие вопросы по тегам