Как получить выбранный элемент панели вкладок во вкладках пользовательского интерфейса Jquery? - PullRequest
5 голосов
/ 26 августа 2009

проблема. У меня есть несколько вкладок, их содержимое загружается через ajax, поэтому div идентификаторы панелей вкладок назначаются динамически. У меня есть форма в одном, ajaxified этот плагин jquery с помощью функции обратного вызова, связанной с событием tabs.load Я передаю ему один параметр, ui.panel, так что ajaxForm () знает цель, где результат загрузки:

function initAjaxForms(loadtab)
{
   $('form').ajaxForm({target:loadtab, success:initAjaxForms});
} 

Это работает нормально, за исключением случаев, когда я отправляю форму и PHP возвращает ее как недопустимую, я больше не могу ее изменить (конечно, функция вызывается без параметра loadtab). идеальным решением было бы иметь больше опций для вкладок, чтобы я мог сделать что-то вроде этого:

function initAjaxForms()
{
   var selected = $('tabs').tabs('option', 'selectedpanel');
   $('form').ajaxForm({target:selectedpanel, success:initAjaxForms});
} 

но это явно не так. Есть идеи?

Ответы [ 7 ]

17 голосов
/ 05 ноября 2009

Выберите панель .ui-tabs, которая не скрыта с помощью .ui-tabs-hide:

var selectedPanel = $("#tabs div.ui-tabs-panel:not(.ui-tabs-hide)");
11 голосов
/ 27 марта 2013

Возможно, jqueryUI изменился, принятый ответ у меня не работает. Вот что работает:

$("#tabs div.ui-tabs-panel[aria-hidden='false']")
1 голос
/ 04 мая 2015

С http://api.jqueryui.com/tabs/#option-active вы можете сделать это:

var activeTab = this.$tabs.tabs("option", "active");
_this.$tabs.find(">div")[activeTab]
1 голос
/ 16 марта 2013

Вот более простая версия:

function getSelectedTab(tabID){
   return $(tabID).find("[aria-expanded=true]");
}

var selectedPanel = getSelectedTab('#tabs');
1 голос
/ 24 июля 2012
function getSelectedTab(tabID){
    return $(tabID).find($(tabID+" .ui-tabs-nav .ui-tabs-selected a").attr('href'));
}
var selectedPanel = getSelectedTab('#tabs');

Этот объект даст вам объект выбранной панели вкладок.

1 голос
/ 05 сентября 2011

У меня возникла именно эта проблема, и хотя это старый вопрос, именно он привел меня к этому ответу, который работает:

var selectedPanel = $("#yw1 div.ui-tabs-panel:not(:has(.ui-tabs-hide))");
1 голос
/ 26 августа 2009

Я в конце концов понял это с небольшим взломом, но я чувствую, что это не идеальное решение:

function initAjaxForms()
{
    var selected = $('#tabs').tabs('option', 'selected');
    var selectedtab = '#tabs > div:eq('+selected+')';
    var selectedtabelement = $(selectedtab).get(0);

    $('form').ajaxForm({ target:selectedtabelement, success:initAjaxForms});

}

кто-нибудь с лучшей идеей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...