2014-12-03 111 views
1

我有一個Jquery選項卡問題,並且更精確地在每個選項卡之間填充,在我的頁面上,我創建和刪除多次。jquery選項卡上創建/刪除新選項卡時有額外填充

,我創建和刪除一個選項卡,額外的空間每次留在標籤領域:

example

爲什麼[主窗口]之間[標籤1]的距離之間並不相同[Tab 1]和[Tab 9]考慮到中間已經創建並刪除了8個新選項卡?

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/

回答

1

問題是你只是刪除錨點,而不是整個列表項。這裏有一個修復:

$("#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

我以相反的順序工作,因爲該指標每次操作後改變。

1

您需要刪除li元素,而不是a元素。

$(「#demo ul a [href^=#tab」+ i +「]」).parent()。remove();

+0

4年後,你應該得到一些積分。 +1。 :-) – isherwood 2014-12-03 16:33:28

+1

哈,謝謝@isherwood!我決定通過提出幫助我的問題/答案來開始成爲一個好公民,但我沒有足夠的觀點來做到這一點。所以我想我會嘗試回答一些低掛水果以達到+15 ...但是男人,人們快速回答這些問題* ;-) – arscan 2014-12-03 16:41:26