Jquery ui 如何在Jquery UI选项卡中获取所选的选项卡面板元素?
这个问题。我有多个选项卡,它们的内容是通过ajax加载的,因此选项卡面板的div id是动态分配的。我有一个表单,通过绑定到tabs.load事件的回调函数对其进行Ajax化。我向它传递一个参数ui.panel,以便ajaxForm知道加载结果的目标位置:Jquery ui 如何在Jquery UI选项卡中获取所选的选项卡面板元素?,jquery-ui,tabs,Jquery Ui,Tabs,这个问题。我有多个选项卡,它们的内容是通过ajax加载的,因此选项卡面板的div id是动态分配的。我有一个表单,通过绑定到tabs.load事件的回调函数对其进行Ajax化。我向它传递一个参数ui.panel,以便ajaxForm知道加载结果的目标位置: function initAjaxForms(loadtab) { $('form').ajaxForm({target:loadtab, success:initAjaxForms}); } 这很好,除了当我提交表单并且PHP返回
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});
}
但显然不是这样。有什么想法吗?我最终用一点技巧解决了这个问题,但我觉得这不是一个完美的解决方案:
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});
}
有人有更好的想法吗?选择未使用.ui选项卡隐藏的.ui选项卡面板隐藏:
var selectedPanel = $("#tabs div.ui-tabs-panel:not(.ui-tabs-hide)");
我一直有这个问题,虽然这是一个老问题,但正是这个问题让我找到了这个答案,这个答案很有效:
var selectedPanel = $("#yw1 div.ui-tabs-panel:not(:has(.ui-tabs-hide))");
这将为您获取所选选项卡窗格的对象。以下是更简单的版本:
function getSelectedTab(tabID){
return $(tabID).find("[aria-expanded=true]");
}
var selectedPanel = getSelectedTab('#tabs');
也许jqueryUI已经改变了,被接受的答案对我来说并不适用。以下是有效的方法:
$("#tabs div.ui-tabs-panel[aria-hidden='false']")
从中,您可以执行以下操作:
var activeTab = this.$tabs.tabs("option", "active");
_this.$tabs.find(">div")[activeTab]
应更新为:var selectedPanel=$tabs div.ui-tabs-panel:可见;我使用了这个“:visible”技巧一段时间,但我将其改为使用“.ui选项卡面板[aria hidden=false]”,因为“:visible”在IE8上不可靠,我最终可以重现NewRelic where tabs.find报告的错误。当其中一个选项卡明显可见时,“ui选项卡面板:visible”将不返回任何元素。这在我测试过的其他浏览器中不会发生,但由于“:visible”在IE8上不可靠,我现在将继续使用.ui选项卡面板[aria hidden=false]。在jQuery 1.9+上不再工作。泰勒·朗的解决方案非常有效!很好的提示!jQuery1.9.1就像一个魔咒!伙计,你救了我一天,伙计!谢谢tyler,这一个在1.11中有效…在过去的几天里我一直在拔头发…用“active”替换“selectedpanel”
var activeTab = this.$tabs.tabs("option", "active");
_this.$tabs.find(">div")[activeTab]