问题所在。我有多个标签,它们的内容是通过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});
}
但显然不是这样。有什么想法吗?
答案 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].