0

私は奇妙でランダムな問題を抱えています。これが私の問題のあるコードのサンプルです。その目的は、ul/li 要素のリストに対する jQuery jCarousel コントロールを作成することです。しかし、内部の要素を垂直方向の中央に配置する必要があるため、含まれる画像が読み込まれると、それぞれの要素のパディングトップを計算しています。

<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 では、一部の画像のみが完全にランダムに load() を通過します。IE8 では、Ctrl+R を押しても、load() を通過する画像はまったくありません。

  • IE の問題により、このプラグインを使用するようになりました。これは、jQuery のドキュメントによると、ブラウザーのキャッシュと load() イベントの間に干渉がある場合に役立ちます。その結果、時々それが機能し、時々 (完全にランダムに、Ctrl+R かどうかにかかわらず) Firefox で「再帰が多すぎます」というメッセージが表示され、IE で「メモリ不足」の例外が発生します。私のコードの 2 番目の console.log は、一部の画像が複数回読み込まれていることを示しています。

何が起こっても、jCarousel は適切にロードされ、最初の console.log は、カルーセルに 11 個の画像があることを返します。

通常、「再帰が多すぎる」というメッセージは、無限ループが原因で発生しますが、私のコードには表示されません。私は無知です。

4

1 に答える 1

0

最新バージョンのjCarouselを使用していますか?コードを試してみると、jCarouselから例外が発生し、要素に幅と高さが設定されていないため、無限ループが発生します。これをバージョンで処理しないと、「再帰が多すぎる」とメモリ不足エラーが発生します。

オプションを追加して合格してみてください

itemFallbackDimension: 10

jCarouselオプションオブジェクトに追加して、状況が改善するかどうかを確認します。(ここでの値10は任意です。好きなものを使用してください)

于 2010-10-12T16:04:18.230 に答える