使用jquery加载每个选项卡过滤器一次

时间:2011-02-04 14:32:53

标签: jquery yui

我有三个标签,每个标签都有特定的过滤器内容。当我单击每个选项卡时,特定的过滤器将加载到#filterContent div中。

问题是,我希望每个过滤器只加载一次并显示每个选项卡的良好过滤器。

我正在使用YUI tabview:http://developer.yahoo.com/yui/tabview/

var tab0 = tabView.getTab(0);
var tab1 = tabView.getTab(1);
var tab2 = tabView.getTab(2);

tab0.addListener("click", onClickTabToPick);
tab1.addListener("click", onClickTabToSend);
tab2.addListener("click", onClickTabFinished);

var onClickTabToPick = function (e) {
    $.get("/OrderManager/ToPickFilter", function (data) {
        $("#filterContent").html(data);
    });
};

var onClickTabToSend = function (e) {
    $.get("/OrderManager/ToSendFilter", function (data) {
        $("#filterContent").html(data);
    });
};

var onClickTabFinished = function (e) {
    $.get("/OrderManager/FinishedFilter", function (data) {
        $("#filterContent").html(data);
    });
};

我如何才能实现这一目标。提前谢谢。

1 个答案:

答案 0 :(得分:1)

只需在不同的容器中加载数据(filterContent1,filterContent2,filterContent3)。您可以使用空innerHTML创建这些容器。在请求之前,您可以检查$('#filterContent1')。html()。如果它是空的,则发出请求,否则只显示它。

此外,您仍然可以使用一个容器,但是您需要在某个对象中存储来自服务器的响应:

var responses = { tab1: null, tab2: null, tab3: null };

var onClickTabToPick = function (e) {
    if ( responses.tab1 == null )
    {
        $.get("/OrderManager/ToPickFilter", function ( data ) {
            responses.tab1 = data;
        });
    }
    $("#filterContent").html( responses.tab1 );
};

对于其他标签,例如第一个。