我正在使用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" );
但这完全打破了旋转木马。