2013-05-21 5 views
1

이 코드에서 parentNode.tagName을 가져오고 어떤 스타일을 li 태그에 넣으십시오.parentNode tagName 얻기

// 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

대신 parentNodeparenNode이, 당신은 읽기 전용입니다 해당 속성에 할당 될 것으로 보인다. 당신은 단지 부모를 원한다면

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

.tagName과 혼란에 이유가 없다. 당신이 DOM에 새 <img>를 추가하고 어디

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

또한, 나는 볼 수 없습니다. 추가되지 않으면 부모가 없습니다.

원본 이미지의 부모를 얻으려는 의도 일 수 있습니다. 이를 위해 각 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%'; 
      } 
     }); 
    }) 
+0

예, 작동합니다! 고마워, 너는 나를 위해 큰일을했다. –

+0

@ Constantyn : 예, 업데이트 된 답변을 참조하십시오. 새로운 ''을 DOM에 추가 한 적이 없으므로 부모 *가 없으므로 (그래서'null') *. 원래 이미지의 부모를 원한다고 가정합니다. 이 문제를 해결할 솔루션을 추가했습니다. –