1

次のようなコードがあります。

var enTabs = {
  "Layout": 0,
  "Edit": 1,
  "Stuff": 2
}

$("#tabs").tabs({
    activate: function (event, ui) {
        switch (ui.newTab.index()) {
            case enTabs.Layout:
             // loads remote data, processes it, draws it to this tab;
            break;

            case enTabs.Edit:
             // loads remote data, processes it, draws it to this tab;
            break;

            case enTabs.Stuff:
             // loads remote data, processes it, draws it to this tab;
            break;

        }
    }
}).tabs("option","disabled",[enTabs.Edit,enTabs.Stuff]);
console.log("active tab", $("#tabs").tabs("option","active")); // says "0"

jQuery の「設計による」ステートメント ( http://bugs.jqueryui.com/ticket/8735 )に従って、activateタブが最初に描画されたときにイベントは処理されません。または.tabs("option","active",enTabs.Layout)、現在のインデックスが設定したオプション/アクティブと一致し、ゼロに初期化されている場合、アクティブ化が起動しないため、設定した場合。

最初にタブを描画するときに、データをロードしたくないので「作成」にバインドしたくないことを認識して、最初の (0 番目の) タブに対して「アクティブ化」が実行されるようにする最善の方法は何ですか?タブが実際にクリックされるまで?

私は作ることができていません

$("#tabs").tabs( "option", "active", -1 ).tabs( "option", "active", enTabs.Layout)

一貫して働きます。

4

2 に答える 2

3

このようなものを使用できます

function loadTab(index) {
   switch (index) {
        case enTabs.Layout:
         // loads remote data, processes it, draws it to this tab;
        break;

        case enTabs.Edit:
         // loads remote data, processes it, draws it to this tab;
        break;

        case enTabs.Stuff:
         // loads remote data, processes it, draws it to this tab;
        break;

    } 
}
 $(function () {
      $("#tabs").tabs({
          create: function (event, ui) { loadTab(ui.tab.index()) },
          activate: function (event, ui) { loadTab(ui.newTab.index()) }
      });
 });

ここに同様の質問があります JQuery UI tabs 1.10.0 activate is not called after creation

于 2013-07-03T11:31:24.357 に答える