javascript - jQuery tabs "add"方法创建两个 <div> 元素

标签 javascript jquery-ui

jQuery 的选项卡 ui 中的“添加”方法向我的“#tabs”元素添加了一个额外的选项卡面板 div,这让我很沮丧。这是我用来添加显示通过 Ajax 获取其内容的日历的选项卡的代码行:

$("#tabs").tabs("add", "tabContent.php?id=48&tab=calendar", "Calendar");

最初只有一个选项卡,现在应该有两个。实际上,<ul> 中现在存在两个选项卡。元素,但现在神秘地有三个 <div>标签面板对应的元素如下所示。如果不是因为新创建的 <div> 之一,这不会成为问题。 elements 没有隐藏,即使它对应于一个非事件选项卡。结果,<div> ,虽然是空的,但在我的第一个和原始选项卡面板的底部占用了一 block 空间。抱歉代码困惑,但我包含了所有原始 jQuery 标记以准确显示 jQuery 做了什么。

<div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
    <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
        <li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a href="#tabs-1">Tab 1</a></li>
        <li class="ui-state-default ui-corner-top"><a href="#ui-tabs-2"><span>Calendar</span></a></li>
    </ul>
    <div id="tabs-1" class="ui-tabs-panel ui-widget-content ui-corner-bottom">
            Original Tab
    </div>

    <!-- Why are there two divs here?? -->
    <!-- Note that first <div> below not given class 'ui-tabs-hide' -->
    <div id="ui-tabs-2" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>
    <div id="ui-tabs-1" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>
</div>

注意两个 <div>底部应该只有一个的元素。

最佳答案

我刚刚遇到了同样的问题。我也使用 AJAX 选项卡。

所以我查看了 JQuery UI 的源代码。

函数 add 创建了这个额外的 div,但随后函数 _tabify 被调用,它创建了没有“ui-tabs-hide”类的额外 div。我认为,它会创建额外的 div,因为它找不到第一个。

这两个函数都使用_tabId 获取新标签页的id,并使用u() 函数获取标签页的索引。

它不起作用的原因是 u() 在 add 和 tabify 函数中被调用了两次。

但是 u() 以这种方式使用变量 v:++v,因此它会为您提供索引并加 1。

所以在 add 函数中创建了 id 'ui-tabs-1' 的 div,但是在 tabify 中你得到另一个 id = 'ui-tabs-2',找不到它和另一个div 已创建。

我试过这个:在第二次调用 _tabId 之前添加 if(!b)v--:i=a._tabId(f);。它在 _tabify 函数中。

Var b 在创建选项卡时为 true,在添加新选项卡时为 false。还有一个调用 _tabify 且 b=false 的函数,它是 _setOption。但是我不知道这个添加的代码是否会破坏它。

关于javascript - jQuery tabs "add"方法创建两个 <div> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354612/

相关文章:

jQuery UI 嵌套 droppables - 使draggable成为droppable

Jquery Ui Sortable 在 IE8 中显示损坏的图像

javascript - Angularjs blueimp fileUpload手动触发提交

javascript - KnockoutJS - 计算可观察对象和 js 对象

javascript - 如何从一个句子或带有冒犯性词的混合匹配句子中挑选冒犯性词

javascript - 更改特定 jQuery UI 对象(selectmenu)的样式而不是全部

jQuery 如何比较两个 CSS 值

javascript - 保存 JQuery UI droppables 的顺序

javascript - 一旦渲染成 HTML 和 CSS,就生成 php 页面的一部分的 PDF,并考虑 pdf 分页符

javascript - 使用 React 按下 Enter 键时单击链接