Как динамически добавлять и удалять вкладки jquery?
У меня есть aspx-страница, на которой у меня есть 2 статических jquery tabs.Upon нажав на кнопку, доступную на одной из этих вкладок, я хотел бы добавить новую вкладку динамически, которая получает ее содержимое, загруженное с другой страницы aspx.I Мы также попробовали использовать следующий образец
http://jquery-ui.googlecode.com/svn/trunk/demos/tabs/manipulation.html
Я загрузил jQuery-ui-1.8rc3.custom zip файл и попытался добавить вышеприведенную страницу с соответствующими script, css файлами на мой сайт asp.net и запустить, но, похоже, это не работает. Также я не хочу открывать диалоговое окно и просить пользователя ввести заголовок табуляции, как в приведенном выше примере.
Пожалуйста, помогите мне с этим?
Спасибо.
Ответы
Ответ 1
Пробовали ли вы использовать метод добавления вкладок?
var tabs = $("#tabs").tabs();
$('#tabs-1 button').click(function(){
tabs.tabs('add','/url_for_tab/','New tab');
});
Обновление -. Как и в jQuery UI 1.9, методы удаления add были устарели, а в jQuery UI 1.10 они были удалены.
Правильный способ сделать это для удаленных вкладок содержимого (ajax) теперь:
var tabs = $( "#tabs" ).tabs();
var ul = tabs.find( "ul" );
$( "<li><a href='/url_for_tab/'>New Tab</a></li>" ).appendTo( ul );
tabs.tabs( "refresh" );
И если у вас уже есть контент:
var tabs = $( "#tabs" ).tabs();
var ul = tabs.find( "ul" );
$( "<li><a href='#newtab'>New Tab</a></li>" ).appendTo( ul );
$( "<div id='newtab'><p>New Content</p></div>" ).appendTo( tabs );
tabs.tabs( "refresh" );
Ответ 2
var main = document.getElementById('main');
var tabber = createMainTab();
tabber.setAttribute("id","tabber")
var mainHelper = createTabHelper();
var testH = createTabHelperElement("Test tab",tabber);
var testTab = createTab(testH);
tabber.appendChild(mainHelper);
mainHelper.appendChild(testH);
tabber.appendChild(testTab);
main.appendChild(tabber);
$(tabber).tabs();
function createMainTab(){
var mainDiv = document.createElement("div");
mainDiv.setAttribute("class","ui-tabs ui-widget ui-widget-content ui-corner-all");
mainDiv.style.height="100%";
mainDiv.onk_initialised = false;
return mainDiv;
}
function createTabHelper(){
var mainUl = document.createElement("ul");
mainUl.setAttribute("class","ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
return mainUl;
}
function createTabHelperElement(name,mainTab){
var mainLi = document.createElement("li");
var active = !mainTab.onk_initialised;
mainTab.onk_initialised=true;
if(active){
mainLi.setAttribute("class","ui-state-default ui-corner-top ui-tabs-selected ui-state-active");
}else{
mainLi.setAttribute("class","ui-state-default ui-corner-top");
}
mainLi.onk_createdActive = active;
mainLi.onk_id = "tab_"+cache;
var oLink = document.createElement("a");
oLink.setAttribute("href","#tab_"+cache);
oLink.innerHTML = name;
mainLi.appendChild(oLink);
cache++;
return mainLi;
}
function createTab(tabHelper){
var tabDiv = document.createElement("div");
if(tabHelper.onk_createdActive){
tabDiv.setAttribute("class","ui-tabs-panel ui-widget-content ui-corner-bottom");
}else{
tabDiv.setAttribute("class","ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");
}
tabDiv.setAttribute("id",tabHelper.onk_id);
return tabDiv;
}
Ответ 3
Я также добавляю вкладки динамически.
mytabs.tabs('add', '/url_for_tab/', 'New tab title');
работает над добавлением новой вкладки. в моем случае это динамический файл jsp
Ответ 4
Вам может понадобиться получить еще два виджета JQuery UI: диалог и положение.
У меня была одна и та же проблема: загрузили демо, а файл manipulate.html не работал. В моем случае это вызывало ошибку при загрузке страницы:
$("#dialog").dialog is not a function
close: function() {
И страница имела 404s: jquery.ui.position.js jquery.ui.dialog.js
Итак, на странице были зависимости, которые были неожиданными и не были включены в мою пользовательскую загрузку.
Я вернулся и получил еще одну обычную загрузку из http://jqueryui.com/download
Как только демо может разрешить jquery.ui.dialog.js, он работал, потому что существовала функция диалога:
typeof $("#dialog").dialog
"function"