我有五个链接。每个链接都有一个id。我将这些id中的每一个保存到一个数组中。
点击链接时我试图从数组中删除匹配的点击链接ID。
我尝试使用以下内容执行此操作:
shuffledBlockIds.splice( $.inArray(removeItem, shuffledBlockIds), 1 );
首次点击该项目会删除,但如果我再次点击它会删除另一个项目(虽然点击的ID不再存在)。
如果数组中存在点击后的ID,我该如何删除项目?
看一下indexOf()
,但这应该不适用于IE8。
IE9 +解决方案也会受到欢迎 - 只是想知道是否有一些聪明的Jquery方法也在处理IE8。
答案 0 :(得分:3)
如果removeItem
中不存在shuffledBlockIds
,则$.inArray()将返回-1
。
documentation for splice()
说(强调我的):
开始强>
开始更改数组的索引。如果大于数组的长度,则实际起始索引将设置为长度 数组。 如果是否定的,将从最后开始那么多元素。
因此,splice()
将最终删除数组中的最后一个元素。
要解决此问题,请使用显式测试:
var index = $.inArray(removeItem, shuffledBlockIds);
if (index >= 0) {
shuffledBlockIds.splice(index, 1);
}