У меня есть некоторый код jQuery, который работает вместе с некоторым внешним PHP, но обычно только после второго обновления. Код предназначен для получения размеров каждого изображения в списке и затем он изменяет стиль каждого изображения, чтобы он соответствовал его родительскому элементу в соответствии с его самой длинной стороной. При первой загрузке этой страницы jQuery, похоже, не может определить высоту и ширину всех изображений, поэтому стиль игнорируется. Как лучше всего обеспечить выполнение jQuery ПОСЛЕ полной загрузки изображений, вызванных из PHP?
Сценарий: у меня есть страница, которая вызывает список изображений с помощью внешнего PHP-скрипта. После запуска PHP результаты отображаются как HTML внутри div с идентификатором «txtHint».
Итак, этот PHP (усеченный для актуальности)...
echo "<li><img src='images/".$rowcat['imageurl']. "'><div class='title'>" . $counter . ". " . $rowcat['name'] ."</div></li>";
$counter++;
повторяется в этом div "txtHint":
<div class="featured-scroller">
<ul>
<div id="txtHint">
<li><img src="images/012.jpg"><div class="title">1. Eyemouth Museum </div></li>
<li><img src="images/014.jpg"><div class="title">2. Edinburgh Museum</div></li>
// and so on...
</div>
</ul>
</div>
Однако, как только результаты будут возвращены, мне нужно проверить размеры каждого экземпляра изображения и стилизовать его в соответствии с тем, больше ли ширина или высота, сохраняя при этом исходное соотношение сторон.
На данный момент я использую следующий jQuery:
$("#txtHint img").each(function() {
var imgHeight = $(this).height();
var imgWidth = $(this).width();
if(imgHeight > imgWidth)
{
$(this).css({'height':'100%', 'width':'auto'});
}
else
{
$(this).css({'height':'auto', 'width':'100%', 'position':'relative', 'top':'50%', 'margin-top': -imgHeight / 2 + 'px', 'display':'inline-block'});
}
});
Следует отметить, что внешний PHP-скрипт вызывается из JavaScript в заголовке страницы. Я не уверен, что это имеет значение.
Текущий код работает, но не с первого раза. Я пробовал $(window).load и т. д., а также вызывал его в упомянутом JavaScript, который вызывает PHP-скрипт, но проблема не устранена.
См. следующий JSfiddle для рабочего примера: http://jsfiddle.net/EMPqW/