2013-10-04 2 views
1

Я использую tabify http://unwrongest.com/projects/tabify для отображения вкладок.Программно изменить вкладку, используя tabify jquery plugin

Я изо всех сил пытаюсь понять, как программно изменить вкладку.

Вот один рабочий пример: http://jsfiddle.net/S78Bt/

$(document).ready(function(){ 
    $('#menu').tabify(); 
}); 

Хотя я знаю, что с помощью вкладок JQuery UI я могу добиться этого поведения, но из-за некоторые неизбежные обстоятельства, мне нужно использовать tabify.

ответ

1

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

Я ознакомился с исходным кодом, нет API для прямого доступа к вкладкам.

Единственное решение взломать косвенно, видя, как библиотека ожидает, что вкладки для изменения:

function changeTab(name) { 
    location.hash = name + '-tab'; 
} 

Это работает на my example.

0

Я не уверен, что это лучший способ, но он работает как минимум. Если посмотреть на исходный код tabify плагина вы увидите:

function getHref(el){ 
    hash = $(el).find('a').attr('href'); 
    hash = hash.substring(0,hash.length-4); 
    return hash; 
} 

function setActive(el){   
    $(el).addClass('active'); 
    $(getHref(el)).show(); 
    $(el).siblings('li').each(function(){ 
     $(this).removeClass('active'); 
     $(getHref(this)).hide(); 
    }); 
} 

Вы можете использовать аналогичный подход: jsfiddle

+0

Это не является хорошим способом, потому что это почти реализовав всю библиотеку самостоятельно. Кроме того, как только будут внесены какие-либо изменения в библиотеку, это может сломаться. Скопировать-вставить всегда плохо. – Denis

+0

@Denis, я согласен, что копирование/вставка очень плохое почти всегда, но как вы можете явно использовать библиотеку/плагин, не зависимо от этого? – kasitan

+0

Вы используете этот API-интерфейс плагина. API не должны меняться. Реализация должна измениться. Вы полагаетесь на реализацию - на имя класса «active» при использовании «siblings» и других деталей, которые могут измениться. Хотя в этой библиотеке нет официального API, мы все же можем попытаться распознать семантический триггер, я описал его в своем ответе. – Denis