作業中のページで jquery-tools タブとカルーセルを使用しています。カルーセルはタブ内に埋め込まれ、タブは beforeClick コールバックで読み込まれます。
通常、カルーセルはドキュメント準備完了関数で次のように初期化されます。
$(function() {
// initialize scrollable
$("div.scrollable").scrollable({
size: 3,
clickable: true,
loop: false
}).mousewheel();
カルーセルが beforeClick を介してロードされた場合、これは機能しません。これは、DOM の準備が整ったときに、このタブがまだロードされていないためです。
$("ul.tabs").tabs("div.panes > div", {
initialIndex: 0,
onBeforeClick: function(event, i) {
// get the pane to be opened
var pane = this.getPanes().eq(i);
var src = this.getTabs().eq(i).attr("href");
var langPattern = "/^" + getLang() + '/';
var forceReload = false;
if (src.match(langPattern) == null)
{
src = getLang() + "/" + src;
forceReload = true;
}
if (pane.is(":empty") || forceReload) {
// load it with a page specified in the tab's href attribute
pane.load(src);
// initialize scrollable - ONLY SHOULD BE DONE ONCE
$("div.scrollable").scrollable({
size: 3,
clickable: true,
loop: false
}).mousewheel();
}
}
}).history();;
私の質問は2部構成です:
最初に、最初にロードされたときにスクロール可能を初期化するためにハンドラーを追加できるイベントはありますか? 第二に、ない場合、スクロール可能がまだ構築されているかどうかを確認する方法はありますか?
このコードの背後にある考え方は、ユーザーの言語選択に基づいてローカライズされた html フラグメントをロードすることです。これは、オンラインではなく CD のカタログ用です。