У меня странная случайная проблема. Вот пример моего проблемного кода. Цель состоит в том, чтобы создать элемент jQuery jCarousel над списком элементов ul/li. Но мне нужно, чтобы элементы внутри были вертикально центрированы, поэтому я вычисляю верхнюю часть для каждого из них, когда загружается изображение, которое они содержат.Слишком много рекурсии с jQuery.load и фотографиями
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#caroussel-cards").jcarousel({ "wrap": 'both', "animation": 800, "scroll": 4, "auto": 6, "easing": 'easeInOutQuint' });
console.log(jQuery("#caroussel .visual img").length); // Always returns 11
jQuery("#caroussel .visual img").load(function (event) {
var img = jQuery(this);
console.log(img.attr('src'));
img.css('paddingTop', (156 - img.height())/2); // 156 is carousel's height
});
});
</script>
<div id="caroussel">
<ul id="caroussel-cards" class="jcarousel-skin-cards">
<!-- Actually there are 11 li elements -->
<li>
<div class="visual">
<a href="#"><img src="/Content/img/check.jpg" border="0" alt="" /></a>
<a href="#" class="bt_command"></a>
</div>
</li>
</ul>
</div>
произошла ошибка очень случайным, но идет следующим образом:
С помощью этого кода, и только этот код: на Firefox 3.6, только некоторые картины будут проходить через нагрузки(), совершенно случайно ; на IE8 изображение вообще не пройдет через нагрузку(), даже нажав Ctrl + R.
Проблема IE привела меня к использованию this plugin, который, согласно документации jQuery, может помочь при возникновении помех между кешем браузера и событием load(). Результат заключается в том, что теперь, иногда это работает, а иногда (полностью случайным образом, Ctrl + R или нет), у меня есть сообщения «слишком много рекурсии» в Firefox и исключения «Out of memory» в IE. Второй console.log в моем коде показывает, что некоторые изображения загружаются несколько раз.
Что бы ни случилось, jCarousel загружается должным образом, и первый console.log возвращает, что есть 11 фотографий в карусели.
Обычно сообщение «слишком много рекурсии» происходит из-за бесконечного цикла, но я не вижу его в своем коде. Я невежественна.
Я не ставил свой CSS-файл для простоты, но мои элементы имеют ширину и высоту (на самом деле 183px x 140px). –
Вы все равно попробовали вариант по умолчанию? Я обнаружил, что вручную добавление ширины и высоты CSS в теги div и img не устраняет проблему, но добавление значения по умолчанию. – Sorpigal