Вкладки jQueryUI: мне просто нужно, чтобы показать или скрыть div! Почему это так сложно?

0

Мне нравится 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, если это возможно.

Заранее большое спасибо!

  • 0
    Вы можете использовать более простые библиотеки с вкладками, подобные этой - os.alfajango.com/easytabs
  • 0
    Или сверните свое собственное, так как эта функциональность может быть выполнена в 10 строк или меньше.
Показать ещё 2 комментария
Теги:
datatables
jquery-ui-tabs

1 ответ

0
Лучший ответ

Я признаю, что это немного хам-кулак, но это работает, как пример.

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

  • 1
    Спасибо Келли, за код и за отличные отзывы о EasyTabs. Похоже, отличная библиотека!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню