2015-11-29 2 views
0

код:дочернего элемента является неопределенным

$(".article-image").each(function(){ 
    var imgW = $(this).children("img").naturalWidth; 
    console.log(imgW); 
}) 

$(this).children("img”).length является 1, однако imgW не определен.

Я также попытался:

$(this).children("img").scrollWidth; 

И это было 0:

$(this).children("img").width(); 
+0

загружен ли изображение? У вас есть прослушиватель onload? Или вы делаете это в документе готовым? (в этом последнем случае не работает, даже img.length равно 1) –

+0

Возможно, вы могли бы использовать find вместо детей? – Lidaranis

+0

@ Использование вашей проблемы - это событие 'load' в изображениях. Вы не читаете ширину ** после загрузки изображения **. Я настаиваю на вас, дайте нам более подробную информацию –

ответ

-1

Try:

$(this).find("img").eq(0).css("width"); 

Если вам нужна ширина определенного элемента, вы можете дать класс элемента:

$(this).find(".className").css("width"); 
+0

'$ (this) .find (" img "). Eq (0) .css (" width ");' говорит 0px; – User

+1

Я проверил ваш сайт, вы можете получить нуль, потому что вы вычисляете ширину перед загрузкой img src, так что ширина равна нулю –

+0

Как подождать, пока она не будет загружена? – User

0

Я пытался прочитать ширину изображения перед загрузкой. Так вот что я сделал:

$(".article-image").each(function(){ 
    $(this).children("img").load(function(){ 
     var imgH = $(this).parent().children("img").height(); 
}) 
0

Использование outerWidth

$(".article-image").each(function(){ 
    var imgW = $(this).children("img").outerWidth; 
    console.log(imgW); 
}) 
Смежные вопросы