2016-07-20 170 views
0

嗨!從UL刪除ONE(無ID)元素jquery

我的問題是,我追加到UL這樣的:

$("#tagek").append("<li><a>"+arr[0]+"</a><span class='ex'><a>X</a></span></li>"); 

所以纔不久:我想打一個標籤雲。當有人輸入逗號時,將標籤添加到ul列表中。這就像魅力,但是我想爲li元素添加一個「X」,所以當有人點擊它時,它將被刪除。 類似的東西:

$(document).on('click','.ex',function(){ 
var li = $('.ex').closest("li"); 
li.remove(); 
}); 

所以,當我點擊「.EX」跨越了李應消失。這是行得通的,但每一個li都被刪除(邏輯上),因爲每個「X」都有相同的類。

對此的任何想法?

也許與.eq()?

謝謝。

+1

創建的jsfiddle請 –

+0

你有不良的佈局,一個標籤裏面跨度是不好的,因爲這個標籤有需要兩個屬性ALT和HREF,李爲前是父母... –

回答

2

您正在嘗試這種行爲,因爲您正在移除每個「.ex」元素中最接近的'li',而不是單擊它。使用$在處理程序(這)選擇來代替:

嘗試:

$(document).on('click','.ex',function(){ 
    $(this).parent().remove(); 
}); 
+0

非常感謝,它的工作。 :) – Corner

1

這是因爲你重新選擇.ex(它可以獲取所有的)函數處理器內部,而不是使用一個該事件是由...觸發的。

修復:

$(document).on('click', '.ex', function() { 
    $(this).closest('li').remove(); 
}); 

編輯:沒有足夠的因緣置評,但alex030293的代碼應該執行得更快,但假定該元素是直接的孩子,而不是一個後代。如果情況總是如此,最好使用他的代碼。如果可能出現.ex元素封裝在另一個標籤中的情況,最好使用我的。

+0

你redditor ......它在這裏的聲譽。 – nerdlyist

+0

這也在工作,謝謝你的回答。不幸的是,我只能標記一個正確的答案。 :( – Corner

1

我想你需要這個,如果你使用jQuery。

$(document).on('click','.ex',function(){ 
    var li = $(this).closest("li"); 
    li.remove(); 
    }); 
+0

謝謝,這也是工作。不幸的是,我只能標記一個答案正確。:( – Corner