2013-05-21 114 views
1

我無法從此代碼獲取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%'; 
     } 
    }); 
} 
+0

但是,在你的代碼中你想讀'parentNode.tagName'? – techfoobar

+0

我們應該如何在沒有關聯的HTML的情況下爲您提供幫助?我會建議做一個小提琴...... –

回答

3

你有parenNode代替parentNode,你似乎被賦予此屬性,它是隻讀的。

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

如果你只是想父母,沒有理由來惹.tagName

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

另外,我不明白,你要追加新<img>到DOM。如果未附加,則不會有父項。

也許你打算得到原始圖像的父母。爲此,每個load()處理程序將需要關閉當前的iimg。您可以使用.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%'; 
      } 
     }); 
    }) 
+0

是的,它的工作原理!謝謝,你爲我做了一件大事。 –

+0

@Constantyn:是的,看我更新的答案。你從不附加新的''到DOM,所以它沒有父*(所以它是'null')*。我假設你實際上想要原始圖像的父母。我添加了一個解決方案來處理這個。 – 2013-05-21 13:40:09