嗨!
我的问题是我要像这样追加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()?
谢谢。
答案 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();
});