如何在Jquery UI选项卡中获取选定的选项卡面板元素?

时间:2009-08-25 22:14:54

标签: jquery-ui tabs

问题所在。我有多个标签,它们的内容是通过ajax加载的,因此标签面板的div id是动态分配的。我有一个表单,由this jquery plugin ajaxified一个回调函数绑定到tabs.load事件我传递一个参数,ui.panel,以便ajaxForm()知道目标在哪里加载结果:< / p>

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

这样可以正常工作,除了我提交表单并且PHP将其返回为无效时,我不能再对它进行ajaxify(当然,函数是在没有loadtab参数的情况下调用的)。完美的解决方案是为标签提供更多选项,以便我可以做到这样的事情:

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

但显然不是这样。有什么想法吗?

7 个答案:

答案 0 :(得分:17)

选择未使用.ui-tabs-hide隐藏的.ui-tabs-panel:

var selectedPanel = $("#tabs div.ui-tabs-panel:not(.ui-tabs-hide)");

答案 1 :(得分:11)

也许jqueryUI已经改变,接受的答案对我不起作用。这是有效的:

$("#tabs div.ui-tabs-panel[aria-hidden='false']")

答案 2 :(得分:1)

我最终想到了一点点黑客,但我觉得这不是一个完美的解决方案:

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});

}

任何有更好想法的人?

答案 3 :(得分:1)

我一直有这个问题,虽然这是一个老问题,但是这个问题引导我找到了这个问题:

var selectedPanel = $("#yw1 div.ui-tabs-panel:not(:has(.ui-tabs-hide))");

答案 4 :(得分:1)

function getSelectedTab(tabID){
    return $(tabID).find($(tabID+" .ui-tabs-nav .ui-tabs-selected a").attr('href'));
}
var selectedPanel = getSelectedTab('#tabs');

这个将为您提供所选标签窗格的对象。

答案 5 :(得分:1)

这是更简单的版本:

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

var selectedPanel = getSelectedTab('#tabs');

答案 6 :(得分:1)

http://api.jqueryui.com/tabs/#option-active你可以这样做:

?- odd_ones([], X).
X = [].
?- odd_ones([a], X).
X = [a].
?- odd_ones([a,b], X).
X = [a].
?- odd_ones([a,b,c], X).
X = [a, c].
?- odd_ones([a,b,c,d], X).
X = [a, c].
?- odd_ones([a,b,c,d,e], X).
X = [a, c, e].