Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 如何在Jquery UI选项卡中获取所选的选项卡面板元素?_Jquery Ui_Tabs - Fatal编程技术网

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

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返回

这个问题。我有多个选项卡,它们的内容是通过ajax加载的,因此选项卡面板的div id是动态分配的。我有一个表单,通过绑定到tabs.load事件的回调函数对其进行Ajax化。我向它传递一个参数ui.panel,以便ajaxForm知道加载结果的目标位置:

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]