rcarousel ( http://ryrych.github.io/rcarousel/ ) と ajax (php ページへの呼び出し) を使用して、さまざまなギャラリーを表示しています。さまざまなギャラリーからのさまざまな写真を表示するページがあり、ユーザーが 1 つを選択すると、php ページへの ajax コールバックが促され、jquery がスライドしてカルーセルを表示します。これは技術的には機能していますが、私の問題は、カルーセル自体が再初期化されていないように見えることです。#carousel div は画像を取得してロードしますが、それらは単なる画像であり、ページは更新されません。firebug を使用すると、最初のロード時にウォークスルーすることがわかります
$( "#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" );
しかし、それはカルーセルを完全に壊します。