Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-从动态创建的数组中删除特定元素_Javascript_Jquery_Arrays_Dynamic_Splice - Fatal编程技术网

Javascript-从动态创建的数组中删除特定元素

Javascript-从动态创建的数组中删除特定元素,javascript,jquery,arrays,dynamic,splice,Javascript,Jquery,Arrays,Dynamic,Splice,我有一个页面,用户可以在其中创建标记(很像stackoverflow中的标记),然后将这些标记发送(POST)到后端以存储在数据库中。用户可以制作标签,但也可以在最后点击Submit之前删除标签 在DOM中,标记与“x”按钮一起生成。“x”按钮从DOM中删除元素,但从数组中删除时会出现问题。我能找到的最接近的解决方案是,但我无法让它对我完全起作用 下面是javascript(我正在使用JQuery) 类似的结果 请帮忙!提前感谢拼接部件正常。问题是您将单击回调添加到.removetag的次数太

我有一个页面,用户可以在其中创建标记(很像stackoverflow中的标记),然后将这些标记发送(POST)到后端以存储在数据库中。用户可以制作标签,但也可以在最后点击Submit之前删除标签

在DOM中,标记与“x”按钮一起生成。“x”按钮从DOM中删除元素,但从数组中删除时会出现问题。我能找到的最接近的解决方案是,但我无法让它对我完全起作用

下面是javascript(我正在使用JQuery)

类似的结果


请帮忙!提前感谢

拼接部件正常。问题是您将单击回调添加到
.removetag
的次数太多

每次添加新元素时,您都在向页面上已有的每个
项目添加另一个
单击
事件。removetag
项目

$('.removetag').click(function()
这样,每当您单击一个元素时,所有其他元素都会被分配来触发click回调

解决方案

相反,在创建标记时,只将单击事件设置为最后添加的
。removetag
元素:

$('.removetag').last().click(function()

您可能应该使用类似于
.indexOf()
的方法来获取元素的索引,然后拼接数组:

tag_array.splice(tag_array.indexOf(elm),1);

谢谢,虽然这确实解决了一个我甚至不知道自己遇到的问题,但它并没有像预期的那样起作用。例如,如果我添加三个标记“a”、“b”和“c”,然后删除“b”,阵列将拼接标记“a”。有什么想法吗?这是因为
splice
将要删除的初始索引作为第一个参数。您将
this
作为索引传递,但要获取元素的实际索引位置,可以使用
$(this).index()
。所以它应该是:
tag_array.splice($(this.index(),1)
$('.removetag').last().click(function()
tag_array.splice(tag_array.indexOf(elm),1);