2010-10-25 3 views
0

Мне нужна функция jQuery для измерения высоты изображения и добавление поля к элементу IMG, поэтому он всегда будет иметь регулярное число, разделяемое на 17 (это моя линия-высота).Как взломать высоту изображения с помощью jQuery?

Любая помощь будет оценена по достоинству. Благодарю.

UPDATE: Я изменил название вопроса и заменил PHP на jQuery. Подумав об этом, мне нужно, чтобы функция запускалась после того, как DOM готов, на всех изображениях в определенном DIV. В этом случае jQuery более разумен, чем PHP.

ответ

2

Если я правильно понимаю ваш вопрос вы хотите знать, как получить каждую высоту изображения и добавить запас по мере необходимости, чтобы получить высоту до нескольких нацело на 17.

Вот быстрый удар в выпуске:

$(document).ready(function(){ 
     $('img').each(function() { 
      var height = $(this).height; 
      var modulus = height % 17; 
      if(modulus != 0) { 
       var marginToAdd = 17 - modulus; 
       $(this).css("margin-bottom", marginToAdd); 
      } 
     }); 
}); 

Так что, как указано выше, получается каждое изображение на странице по его тегу. Если вам не нужны все изображения на странице, вы можете поместить все изображения в контейнер, чтобы у вас был более селективный селектор. Затем он получает остаток от деления высоты на 17. Если остаток равен 0, он ничего не делает, если он отличен от нуля, он вычисляет запас, который необходимо добавить, чтобы сделать его равномерно делимым на 17 и добавляет его к нижней части изображения.

+0

Я думаю, что это так , Тестирование! –

+0

Работает! Спасибо! –

+1

Если изображение не загружено, вам понадобится метод загрузки. –

0

Вы можете получить высоту изображения с JQuery просто делает

$('#my_img_id').height(); 

Для DOM готов, просто проверить http://api.jquery.com/ready/

Edit: Это то, что вы мы ищем?

<script> 
$(function(){ 
    $('#myDiv img').each(function(){ 
     alert($(this).height()); 
    }); 
}); 

</script> 
<div id="myDiv"> 
    <img src="asd.png"> 
    <img src="gg.png"> 
</div> 
1
$(this).children("img").attr("height") 

Существует очень похожий вопрос здесь: Using jQuery each to grab image height

+0

неверно, потому что высота будет возвращена только в том случае, если атрибут установлен в теге html, а браузер не будет знать размер до загрузки изображения, который может быть до или после события готовности документа. –

1

JQuery имеет некоторые проблемы с документа готовы и изображения нагрузки по этому вопросу.

, если вы хотите, чтобы проверить размеры изображения, которые нужно знать, если было загружено изображение или нет, потому что вы можете иметь дом готов без загружены изображения или изображение не будет инициировать событие OnLoad

так:

var image = $('#image'); 
if(image.get(0).complete){ 
    do_what_you_need(); 
} else { 
    image.load(function(e){ 
     do_what_you_need();    
    }); 
} 
Смежные вопросы