在javascript中,有两个数组:tags[]
和tags_java[]
。我使用.splice
删除某些项目,两个数组中的索引相同。 tags[]
工作正常,但tags_java
没有,似乎总是删除最后一项
这是代码和 the jsfiddle link 。
var tag = $(this).text();
var index = $.inArray(tag, tags);
tags.splice(index,1);
tags_java.splice(index,1);
答案 0 :(得分:1)
不,两者都不起作用,因为你实际上找不到标签的正确索引。
为什么不呢?由于$(this).text()
包含您添加的删除标记,×
- 例如“晨×”。由于那不在您的tags
数组中,index
将为-1。 tags.splice(-1, 1);
将从数组末尾删除1个项目。
通常,使用表示文本(即标记元素的文本)作为数据(例如,将该文本用作数组中的查找值)绝不是一个好主意。当演示文稿发生变化时,它很可能会被破坏 - 就像这里一样。因此建议将数据(您需要查找标签的内容)存储为数据 - 例如使用jQuery提供的data()
API - 即使它似乎是多余的。
这是一个简单的例子 - 只需添加/替换两行,我用“JT”开头的注释标记:JSFiddle
现在,我们不是按$(this).text()
向上查找,而是查找与$(this).data()
一起存储的数据值“tagValue” - 这样,查找值仍然绑定到元素,但是我们不依赖于演示文稿。
答案 1 :(得分:0)
如果tag
不在tags
数组中,$.inArray
将返回-1
,这会导致删除最后一项。
You have to make sure that the item is actually in the array