2015-04-29 228 views
0

我在我的程序中使用jquery token輸入,並根據選擇列表更改我需要傳遞額外的參數到搜索功能。我可以通過下面的代碼來完成。使用jquery刪除元素

$("#service").on('change', '.act_type', function() { 
qq = $(this).val(); 
var id = $(this).attr('id').split('-'); 
$("#token-input-code-" + id[1]).detach(); 
$("#code-"+id[1]).tokenInput("../Preapproval/Searchactivitycode?queryParam=q" + "&type=" + qq,{ 
theme: 'facebook', 
preventDuplicates: true, 
searchingText: 'Searching...', 
tokenLimit: 1, 
hintText: 'Activity code', 
}); 

行正在動態創建。選擇列表中的更改完成後,我將分離當前具有令牌輸入的文本框。否則,通過保留舊的文本框來創建新的文本框。現在它將分離舊的並創建一個具有相同id和tokeninput的新分區。搜索也成功。但是我面臨着一個問題。

令牌輸入$("#token-input-code-" + id[1])正在<ul><li></li></ul下,並且這個li和ul沒有被刪除,所以每當我在選擇列表中進行更改時,一行將出現在行頂部。 我如何刪除ul和li。它沒有一個id只有一個類,同樣的類也被用於表單中的另一個ul元素。

+0

所以你要刪除的UL當空,李呢? – ekuusela

+0

爲什麼要在創建具有相同標識的新標識時將其分離?爲什麼不按照要求更改內容/代碼? –

+0

親愛的ekuusela,是的,我需要刪除ul當空和李以及 – Sachu

回答

1

嘗試:

$('ul:has(li:empty)').filter(function() { 
    return $(this).children().length === 1; 
}).remove(); 

DEMO

+0

它也在工作,但我使用了上面的一個。 – Sachu

0

你可以用這樣的功能分離的父元素:

function detachInput(id) { 
    var li = $('#' + id).closest('li'); 
    if (li.siblings().length === 0) { 
     li.closest('ul').detach(); 
    } else { 
     li.detach(); 
    } 
} 

這假定ul元素可以包含多個li元素和你只想要刪除的ul當它是空的。

調用它像這樣:

detachInput("token-input-code-" + id[1]); 

你應該考慮是否真的要detach或實際remove

+0

分離和刪除之間的差異是什麼? – Sachu

+0

我鏈接到他們兩個的文檔。幾乎在分離文檔的頂部解釋了差異。 – ekuusela

+0

很棒..它的工作很好..我改變了.detached to .remove,因爲我不想重複使用它。感謝您的幫助 – Sachu

1

使用jQuery的unwrap()

var el = $('div[id^="token-input-code"]'); 
     el.parent('li').unwrap(); 
     el.parent('ul').unwrap();