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

发布于 2024-08-03 03:02:02 字数 672 浏览 2 评论 0原文

问题。我有多个选项卡,它们的内容是通过ajax加载的,因此选项卡面板的div id是动态分配的。我有一个表单,由 这个 jquery 插件 通过绑定到 tabs.load 事件的回调函数进行 ajaxified我向它传递了一个参数 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});
} 

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

The problem. I have multiple tab, their content is loaded via ajax, so the div id's of tabs' panels are assigned dynamically. I have a form in one, ajaxified by this jquery plugin by a callback function bound to tabs.load event I pass it one parameter, the ui.panel, so that the ajaxForm() knows the target where to load result:

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

This works fine, EXCEPT when I submit the form and PHP returns it as not valid, I cannot ajaxify it anymore (of course, the function is called with no loadtab parameter). the perfect solution would be to have more options to tabs so that i can do something like this:

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

but this is obviously not it. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

拥抱没勇气 2024-08-10 03:02:02

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

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

Select the .ui-tabs-panel that isn't hidden with .ui-tabs-hide:

var selectedPanel = $("#tabs div.ui-tabs-panel:not(.ui-tabs-hide)");
垂暮老矣 2024-08-10 03:02:02

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

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

Maybe jqueryUI has changed, the accepted answer does not work for me. Here is what works:

$("#tabs div.ui-tabs-panel[aria-hidden='false']")
何止钟意 2024-08-10 03:02:02

我最终通过一点技巧解决了这个问题,但我觉得这不是一个完美的解决方案:

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

}

有人有更好的主意吗?

I eventually figured it out with a little hack, but I sense this is not a perfect solution:

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

}

anyone with better idea?

月下伊人醉 2024-08-10 03:02:02

我一直遇到这个问题,虽然这是一个老问题,但正是这个问题让我找到了这个答案,该答案有效:

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

I've been having this very problem, and whilst this is an old question, it's the one that led me to this answer, which works:

var selectedPanel = $("#yw1 div.ui-tabs-panel:not(:has(.ui-tabs-hide))");
你与昨日 2024-08-10 03:02:02
function getSelectedTab(tabID){
    return $(tabID).find($(tabID+" .ui-tabs-nav .ui-tabs-selected a").attr('href'));
}
var selectedPanel = getSelectedTab('#tabs');

这将为您提供所选选项卡窗格的对象。

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

This one will get you the object of the selected tab pane.

仅此而已 2024-08-10 03:02:02

这是更简单的版本:

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

var selectedPanel = getSelectedTab('#tabs');

Here is more simpler version:

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

var selectedPanel = getSelectedTab('#tabs');
记忆消瘦 2024-08-10 03:02:02

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

var activeTab = this.$tabs.tabs("option", "active");
_this.$tabs.find(">div")[activeTab]

From http://api.jqueryui.com/tabs/#option-active you can do this:

var activeTab = this.$tabs.tabs("option", "active");
_this.$tabs.find(">div")[activeTab]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文