How to make a jQuery Horizontal Tab that loads the page once

后端 未结 5 1619
眼角桃花
眼角桃花 2020-12-11 12:46

I want a jQuery horizontal tab pane (screenshot below) where clicking on a tab loads an external page in the div but where clicking on it after it is loaded does not load th

相关标签:
5条回答
  • 2020-12-11 13:24

    All you need to do is put this sample inside an AJAX call:

    http://jqueryui.com/demos/tabs/#manipulation

    0 讨论(0)
  • 2020-12-11 13:35

    I'm sorry if i got it wrong but;

    $('#tabs').tabs({cache: true});
    

    It's enough.

    0 讨论(0)
  • 2020-12-11 13:40

    Use the one() function.

    Ex:

    $("#foo").one("click", function() {
      alert("click can only be done once.");
    });
    

    UPDATE

    If you are trying to cache the Ajax response so that subsequent Ajax requests that match the original Ajax options will return the cached response instead of making a new call then i highly recommend using this excellent jQuery plugin http://plugins.jquery.com/project/ajax-cache-response

    0 讨论(0)
  • 2020-12-11 13:46

    Try making your AJAX call in the "show" event of the tabs. This should only fire, when a tab is shown (i.e. when the selected tab changes).

    http://docs.jquery.com/UI/Tabs#event-show

    0 讨论(0)
  • 2020-12-11 13:49

    Try something like this:

    var cache = {};
    
    function loadTab(tabObj) {
        if(!tabObj || !tabObj.length){ return; }
        $(containerId).fadeOut(100);
    
        var target = tabObj.attr('href');
    
        if (cache[target] !== undefined) {
            $(containerId).html(cache[target]);
            $(containerId).slideDown('medium');
            $(containerId).fadeIn('slow');
        } else {
            $(containerId).load(tabObj.attr('href'), function()
            {
                cache[target] = $(containerId).html();
                $(containerId).slideDown('medium');
                $(containerId).fadeIn('slow');
            });
        }
    }
    
    0 讨论(0)
提交回复
热议问题