Мне нравится jQueryUI, но виджет Tabs, похоже, слишком усложняет ситуацию (jQueryUI версия 1.10.3).
Я знаю, что он может загружать контент "на лету", и это все замечательно, но у меня здесь очень простая структура с формой и некоторыми DataTables, более или менее такими:
<div id="MyContent">
<ul>
<li><a href="#Form">Main Data</a></li>
<li><a href="#SubTable1">Additional data 1</a></li>
<li><a href="#SubTable2">Additional data 2</a></li>
</ul>
<div id="Form">
<form>...</form>
</div>
<div id="SubTable1">
DataTables 1 goes here
</div>
<div id="SubTable2">
DataTables 2 goes here
</div>
</div>
Однако, когда я применяю вкладки jQueryUI, это ужасно ломается. Одной из причин, по которой я уже знаю, является использование <base>
в моем коде, что делает вкладки "думаю", что я хочу загрузить мой контент "на лету", а не просто скрывать/показывать контент уже там. Но даже с помощью взлома, чтобы исправить это, DataTables не отображается правильно.
И, честно говоря, я не хочу тратить дни, пытаясь понять все, чтобы найти исправление.
Вместо этого я хотел бы знать, есть ли способ "отключить" все причуды JQueryUI Tabs и заставить его просто скрывать и показывать мои вкладки, используя все, что находится внутри каждого div. Является ли это возможным?
Это решило бы мою проблему. Если я вручную создаю несколько кнопок и связываю событие click, которое просто выполняет display: none
/display: block
to my divs, они работают как шарм, включая DataTables.
На самом деле, я рассматриваю возможность полного добавления jQueryUI вкладок и создания необходимого кода для этого, но я предпочел бы использовать вкладки jQueryUI, если это возможно.
Заранее большое спасибо!
Я признаю, что это немного хам-кулак, но это работает, как пример.
HTML:
<div id="MyContent">
<ul>
<li><a href="#Form">Main Data</a></li>
<li><a href="#SubTable1">Additional data 1</a></li>
<li><a href="#SubTable2">Additional data 2</a></li>
</ul>
<div id="Form" class="tab active">
<form>My Form</form>
</div>
<div id="SubTable1" class="tab">
DataTables 1 goes here
</div>
<div id="SubTable2" class="tab">
DataTables 2 goes here
</div>
</div>
CSS:
.tab{display:none}
.active{display:block}
JQuery:
$('#MyContent a').on('click',function(e){
var id = $(this).attr('href')
$('div.active').toggleClass('active');
$(id).toggleClass('active', ($(this).attr('class') != 'active'));
console.log()
})
Работа jsFiddle