2

私はjquery uiタブを使用してhtmlをロードしています。そのhtmlにはメソッドがあります。

$("#tabs").tabs({               
                beforeLoad: function (event, ui) {
                    ui.jqXHR.error(function () {
                        ui.panel.html(
                          "Couldn't load this tab. We'll try to fix this as soon as possible. " +
                          "If this wouldn't be a demo.");
                    });
                    ui.jqXHR.success(function () {
                        alertMe()
                    });
                }
            });

<div id="tabs" style="height: 100%">
        <ul>
            <li><a href="Map.html">Tab 1</a></li>
        </ul>
 </div>

map.html の中には、alertMe メソッドがあります。ここでは、alertMe が未定義であることを示しています。

4

1 に答える 1

3

jqXHR 'success' は、サーバーが応答を正常に返したときに呼び出されますが、タブ レンダリング ロジックが発生する前に呼び出されます (html/js をページに追加するなど)。したがって、より良い解決策は、タブ コントロールの load メソッドを使用して呼び出しを処理することです。

$('tab's).tabs({
    beforeLoad: ...
    load: function() {
       alertMe(); // Global JS on loaded fragment will be available on page now
    }
});

API ドキュメント: http://api.jqueryui.com/tabs/#event-load

于 2013-04-24T17:51:16.533 に答える