JQuery загрузить страницу только один раз на вкладке нажмите - PullRequest
1 голос
/ 18 августа 2010

У меня есть страница с некоторыми вкладками, и после нажатия на определенные вкладки другие страницы загружаются динамически. Единственная проблема заключается в том, что эти страницы загружаются при каждом нажатии вкладок. Как заставить их загружаться только один раз, при первом клике?

код, который я использую, это:

$(document).ready(function(){
    $(".tab-content").hide();
    $("#one").show();

    $("a.tab-name").click(function(){
        $(".tab-name-active").removeClass("tab-name-active");
        $(this).addClass("tab-name-active");
        $(".tab-content").fadeOut();
        var content_show=$(this).attr("title");

        if (content_show === 'three') {
            $("#"+content_show).load('new-page.php', function() {
                $("#sorttable").tablesorter({
                    headers: {0: {sorter: false}}
                });
            });
        }
        else if (content_show === 'four') {
            $("#"+content_show).load('new-page-2.php');
        }

        $("#"+content_show).delay(100).fadeIn('slow');

        return false;
    });
});

Спасибо!

Ответы [ 2 ]

3 голосов
/ 18 августа 2010

используйте .data() для сохранения логического значения.

$(document).ready(function(){
    $(".tab-content").hide();
    $("#one").show();

    $("a.tab-name").data('loaded',false).click(function(){
        var $this = $(this);
        $(".tab-name-active").removeClass("tab-name-active");
        $this.addClass("tab-name-active");
        $(".tab-content").fadeOut();
        var content_show= this.title;

        if (! $this.data('loaded')) {

          if (content_show === 'three') {
            $("#"+content_show).load('new-page.php', function() {
                $("#sorttable").tablesorter({
                    headers: {0: {sorter: false}}
                });
                $this.data('loaded',true);
            });
          }
          else if (content_show === 'four') {
            $("#"+content_show).load('new-page-2.php', function(){
                $this.data('loaded',true);
            });
          }

        } 

        $("#"+content_show).delay(100).fadeIn('slow');

        return false;
    });
});
0 голосов
/ 18 августа 2010

Я только вчера сделал такую ​​функцию.Хотя я сделал это, добавив класс "still_loading" в произвольный div (скажем, ваш контейнерный div), а затем, когда вкладка наконец загрузится, снова удалите этот класс.

...