1

好的,情况如下:我使用 jcarousel 的基本示例(通过 PHP 脚本通过 Ajax 加载动态内容的轮播)作为基础:

    function mycarousel_itemLoadCallback(carousel, state)
{
    // Check if the requested items already exist
    if (carousel.has(carousel.first, carousel.last)) {
        return;
    }

    jQuery.get(
        'dynamic_ajax_php.php',
        {
            first: carousel.first,
            last: carousel.last
        },
        function(xml) {
            mycarousel_itemAddCallback(carousel, carousel.first, carousel.last, xml);
        },
        'xml'
    );
};

function mycarousel_itemAddCallback(carousel, first, last, xml)
{
    // Set the size of the carousel
    carousel.size(parseInt(jQuery('total', xml).text()));

    jQuery('image', xml).each(function(i) {
        carousel.add(first + i, mycarousel_getItemHTML(jQuery(this).text()));
    });
};

/**
 * Item html creation helper.
 */
function mycarousel_getItemHTML(url)
{
    return '<img src="' + url + '" width="75" height="75" alt="" />';
};

jQuery(document).ready(function() {
    jQuery('#mycarousel').jcarousel({
        // Uncomment the following option if you want items
        // which are outside the visible range to be removed
        // from the DOM.
        // Useful for carousels with MANY items.

        // itemVisibleOutCallback: {onAfterAnimation: function(carousel, item, i, state, evt) { carousel.remove(i); }},
        itemLoadCallback: mycarousel_itemLoadCallback
    });
});

我想做的是在轮播完成初始化并且图像在dom中并且可以访问之后立即执行一个函数。然而,这应该只发生在页面加载上。并非每次都按下上一个或下一个按钮。非常感谢您对此事的任何帮助。

谢谢

4

2 回答 2

1

你可以使用initCallback.

$(function(){

  $("#mycarousel").jcarousel({
    initCallback: function(){
      alert("jCarousel is initialized!");
    }
  });

});

使用 Ajax 选项

由于您在评论中指出您正在使用 ajax 选项,以便稍后加载您的图像,我建议继续使用itemLoadCallback,并简单地添加一个标志变量。

var loadedfirstime = true;
$("#mycarousel").jcarousel({
  itemLoadCallback: function(){
    if (loadedfirsttime) {
      myFunction();
      loadedfirsttime = false;
    }
  }
});

通过设置标志,所有未来的回调都不会引发相同的行为。

于 2010-01-21T18:15:31.167 回答
0

乔纳森,非常感谢您出色而快速的回复。由于某种原因,我无法让它工作,这意味着在构建 Carousel 并且图像在 dom 中可用之后自动调用一个函数。但是我做了一个不太优雅的方法,并使用了一个设置为 1 秒延迟的计时器——我知道这不是最优雅的解决方案,也绝对不是 100% 可靠的,但它现在可以工作。

再次感谢您的超级快速回复。

于 2010-01-21T20:08:41.867 回答