javascript - 带有额外填充的 jquery 选项卡动态创建/删除新选项卡

标签 javascript jquery html tabs spacing

我在使用 Jquery Tabs 时遇到问题,更准确地说,我在页面上多次创建和删除每个选项卡之间的填充。

每次我创建和删除一个标签时,标签区域都会留下额外的空间:

example

考虑到在中间创建和删除了 8 个新标签,为什么 [Main Tab] 和 [Tab 1] 之间的距离在 [Tab 1] 和 [Tab 9] 之间不相同?

HTML:

<div id='demo'>
<ul>
    <li><a href="#main">Main Tab</a></li>
    <li><a href="#ref">Tab 1</a></li>
</ul>
<div id='main'>Main</div>
<div id='ref'>Reference tab</div>
</div>

JavaScript:

$( '#demo' ).tabs();
var tabs = $( "#demo" ).tabs();
var ul = tabs.find("ul");
//-- Create 10 tabs
for (i = 1; i < 10; i++) {
    $( "<li><a href='#tab" + i + "'>Tab " + i + " </a></li>" ).appendTo(ul);
    $( "<div id='tab" + i + "' style=''>This is the tab " + i + "</div>" ).appendTo(tabs);
}
tabs.tabs('refresh');

//-- Delete 9 tabs
for (i = 1; i < 9; i++) {
    $( "#demo ul a[href^=#tab" + i + "]" ).remove();
    $( "#demo div[id^=tab" + i + "]" ).remove();
}
tabs.tabs('refresh');

这是重现它的 JsFiddle

http://jsfiddle.net/wh3ct1cn/

最佳答案

问题是您只是删除了 anchor ,而不是整个列表项。这是一个修复:

$( "#demo ul a[href^=#tab5]" ).parent('li').remove();

Demo


与其从 DOM 中删除它们,不如使用 remove() 函数?

//-- Delete tabs 5, 6, and 7
for (i = 7; i > 4; i--) {
    $("#demo").tabs('remove', i);
}

Demo

我以相反的顺序工作,因为索引在每次操作后都会发生变化。

关于javascript - 带有额外填充的 jquery 选项卡动态创建/删除新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27276534/

相关文章:

javascript - 如何在我的场景中正确清除间隔?

jquery - 当用户接近页面末尾时修复内容而不是滚动

javascript - Chrome 扩展 : Running Different . js 文件取决于您所在的网站?

javascript - DataTable 按钮 - 自定义

javascript - 在 HTML 中分隔元素以最大程度地减少一个元素对另一个元素的影响的最佳方法是什么?

JqueryUI Draggable 无法在 IE 中工作?

javascript - 序列化内连接

javascript - .addEventListener 不是一个函数吗?

javascript - 使用 BookBlock jquery 插件导航 Div 内容

html - 如何有效地处理 Dart 中的浏览器历史记录(即后退按钮)?