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 添加到页面)。所以更好的解决方案是使用 tabs 控件的 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 回答