我有一個奇怪的隨機問題。這是我有問題的代碼的一個示例。它的目的是在ul/li元素列表上創建一個jQuery jCarousel控件。但是我需要裏面的元素是垂直居中的,所以一旦他們包含的圖片被加載,我就爲每個元素計算一個填充頂部。遇到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上,根本沒有圖片會通過load(),甚至按下Ctrl + R。
IE問題使我使用this plugin,根據jQuery文檔,當瀏覽器緩存和load()事件之間存在干擾時,它可以提供幫助。結果是,現在,它有時會起作用,有時(完全隨機的,Ctrl + R或不),我在Firefox上有「太多遞歸」消息,在IE上出現「內存不足」異常。我的代碼中的第二個console.log顯示一些圖片被多次加載。
不管發生什麼事,在的jCarousel被正確加載,和第一的console.log返回,有11張圖片的旋轉木馬。
通常由於無限循環而發生「太多遞歸」消息,但在代碼中看不到一個消息。我無能爲力。
我沒有把我的CSS文件爲了簡單,但我的元素確實有一個寬度和高度(實際上是183px x 140px)。 – 2010-10-12 16:40:52
您是否嘗試了默認選項?我發現手動將CSS寬度和高度添加到div和img標記沒有解決問題,但添加了默認值。 – Sorpigal 2010-10-12 16:47:31