Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Уникализация вкладок в jQuery [$.tabs()]


Автор: DeamonShan 12.8.2011, 12:46
Есть некая админка, где разделы открываются во вкладках от jQuery [$.tabs()]. Все прекрасно работает, за исключением того, что при открывании одного и того же раздела дважды, создаются две вкладки.

Вопрос такой: Как сделать, так, чтобы вкладки были уникальные. То есть, если раздел был открыт во вкладке, то при повторном открытии не создавалась новая вкладка, а активировалась та, которая была открыта с этим разделом? И так для каждой вкладки.

Автор: rodnover 12.8.2011, 13:13
Код

if ($("#tabs_id").size > 0) {
  $("#tabs").tabs("select", "#tabs_id");
}



Может так?

Автор: DeamonShan 12.8.2011, 14:38
rodnover, это как?

Вкладки все динамические, к ним id и index динамически задаются плагином, так что, так не катит))

Добавлено через 7 минут и 19 секунд
Код

    var ui_panel_index=false;
    var taby=new Array();

    var $tabs=$("#mtab").tabs({
     add: function(event, ui){
        
        $tabs.tabs("select","#"+ui.panel.id );
        ui_panel_index=ui.index;

    },
    tabTemplate: '<li><table style="font-size:12px;margin: 0; padding: 0"><tr><td><a href="#{href}"><span>#{label}</span></a></td><td><a                                  href="#{href}" class="close_tab"><img src="http://www.bambinipronto.com.au/images/icon_close_window.jpg" width="15px" border="0"></a></td></tr></table></li>'
    });    



    $(".close_tab").live("click", function(){
    var this_u=$(this).attr("href");
    var now_i=$.inArray(this_u,taby);
    //alert(now_i);
    if(now_i > 0){
        $tabs.tabs("remove", now_i);
        delete taby[now_i];
    }
    return false;
    });
    
    $("#menu label").bind("click",function() {
        
        var this_url=$("a", this).attr('href');
        var this_text=$("a", this).text();
        var now_index=$.inArray(this_url, taby);
            if(now_index > 0){
                 $tabs.tabs("select",now_index);
            }else{
                 $tabs.tabs("add", this_url, this_text);
                 taby[ui_panel_index]=this_url;
            }
         return false;
     });



то что я накидал, вкладки работают, уникальность сохраняется, но при закрывании вкладок в случайном порядке, теряется индекс и соответственно по условию

Код

    if(now_i > 0){
        $tabs.tabs("remove", now_i);
        delete taby[now_i];
        }



дальше табы не закрываются....

При переключении табов, работает отлично, то есть если попытаться открыть какой либо раздел, и если он уже открыт, просто активирует вкладку... иначе создает.

Единственное не пойму, что происходит когда закрываю вкладки, вроде все верно.

Автор: rodnover 12.8.2011, 15:43
Можно на событие удаления вкладки сделать такой код:

Код

$("#mtab").tabs({
    remove: function(event, ui)
   {
        delete taby[now_i];     // Удалять только здесь!!
    for (I = now_i + 1; I <= taby.length; I++)
    {
        taby[I - 1] = taby[I];
    }
    }



Извиняюсь, за ошибки в коде, но суть, думаю, ясна.


P.S.
http://ruseller.com/lessons.php?rub=32&id=526

Вот это как пример не подойдет?

Автор: DeamonShan 24.8.2011, 09:44
rodnover, Пример не подойдет. ибо у меня задействована библиотека JQ. Передлывать нету времени... надо решить проблемы в таком виде, в каком она есть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)