从UL jquery中删除ONE(不带id)元素

时间:2016-07-20 16:27:02

标签: javascript jquery tags append cloud

嗨!

我的问题是我要像这样追加UL:

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

所以就在短期内:我想制作一个标签云。当有人键入逗号时,将标记添加到ul列表中。这就像魅力,但我想添加一个&#34; X&#34;到li元素,所以当有人点击它时,它将被删除。 这样的事情:

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

所以,当我点击&#34; .ex&#34;跨越它的&#39;李应该消失。这是有效的,但每个都被删除(逻辑上),因为每个&#34; X&#34;有同一个班级。

有关于此的任何想法吗?

也许用.eq()?

谢谢。

3 个答案:

答案 0 :(得分:2)

您正在尝试这种行为,因为您删除了每个'.ex'元素中最接近的'li'而不是单击的那个。改为使用处理程序中的$(this)选择器:

尝试:

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

答案 1 :(得分:1)

这是因为你在函数处理程序中重新选择了.ex(它获取了所有这些),而不是使用触发事件的那个。

修正:

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

编辑:没有足够的业力来评论,但是alex030293的代码应该执行得更快,但是假设元素是直接子节点而不是后代节点。如果情况总是这样,那么使用他的代码会更好。如果可能存在将.ex元素封装在另一个标记中的情况,则最好使用我的。

答案 2 :(得分:1)

我认为如果你使用jquery,你需要这个。

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