1

我正在使用 rcarousel(http://ryrych.github.io/rcarousel/)和 ajax(调用 php 页面)来显示不同的画廊。我有一个页面,显示了来自不同画廊的一堆不同图片,用户选择一个,这会提示一个 ajax 回调到我的 php 页面,jquery 将其滑过以显示轮播。这在技术上是可行的,但我的问题是轮播本身似乎没有重新初始化。#carousel div 获取图像并加载它们,但它们只是图像,页面没有更新。使用萤火虫,我可以看到它第一次加载时,它会通过

$( "#carousel" ).rcarousel({
auto: {enabled: false},
start: generatePages,
visible: 4,
pageLoaded: pageLoaded,
width: 160,
height: 120,
margin:20
}); 

然后去执行 generatePages 和 pageLoaded 函数。但是在我单击图像后,它仍然解析 $( "#carousel" ).rcarousel({ 和选项,但随后它就停止了。我需要知道调用什么来重新初始化(或杀死并重新开始)旋转木马。

经过一番摸索,我发现:

 return !( $.isFunction(callback) &&
 callback.call( this.element[0], event, data ) === false ||
 event.isDefaultPrevented() ); 

在 jquery.ui.widget.js 文件(第 230 行)中,但我不确定这是否是问题所在,或者如果是,该怎么办......任何人有任何建议或可以指出我的权利方向,我会真的给你邮寄啤酒!

*更新*** 所以做了更多的研究,我认为我需要做的是要么完全摧毁小部件,要么不使用大锤,而是以某种方式重新启动它。我看到 ui.widget.js 有这个功能:

 destroy: function() {
this.element
.unbind( "." + this.widgetName )
.removeData( this.widgetName );
this.widget()
.unbind( "." + this.widgetName )
.removeAttr( "aria-disabled" )
.removeClass(
this.widgetBaseClass + "-disabled " +
this.namespace + "-state-disabled" );
},

我尝试添加:

    destroy: function()
    {
        this.rcarousel.remove();
        $.Widget.prototype.destroy.call(this);
    }

到 ui.carousel.js 然后通过调用它

$( "#carousel" ).rcarousel( "destroy" );

但这完全打破了轮播。

4

0 回答 0