Jquery .splice($.inArray())应仅删除匹配项

Jquery .splice($.inArray())应仅删除匹配项,jquery,splice,Jquery,Splice,我有五个链接。每个链接都有一个id。我将每个id保存到一个数组中 单击链接时,我试图从数组中删除匹配的单击链接id 我正试图通过以下方式实现这一点: shuffledBlockIds.splice( $.inArray(removeItem, shuffledBlockIds), 1 ); 该项在第一次单击时删除得很好,但是如果我再次单击,它只会删除另一项,尽管单击的id不再存在 如果数组中存在单击的id,如何仅删除项目 看了indexOf,但这应该在IE8中不起作用 IE9+解决方案也会受到

我有五个链接。每个链接都有一个id。我将每个id保存到一个数组中

单击链接时,我试图从数组中删除匹配的单击链接id

我正试图通过以下方式实现这一点:

shuffledBlockIds.splice( $.inArray(removeItem, shuffledBlockIds), 1 );
该项在第一次单击时删除得很好,但是如果我再次单击,它只会删除另一项,尽管单击的id不再存在

如果数组中存在单击的id,如何仅删除项目

看了indexOf,但这应该在IE8中不起作用

IE9+解决方案也会受到欢迎——只是想知道是否有一些智能Jquery方法也能处理IE8

小提琴:

如果ShuffledBlockID中不存在removeItem,将返回-1

矿山的重点是:

开始

开始更改数组的索引。如果大于数组的长度,则实际起始索引将设置为长度 数组的一部分。如果是负数,那么许多元素都将从末尾开始

因此,splice最终将从阵列中删除最后一个元素

要解决此问题,请使用显式测试:

var index = $.inArray(removeItem, shuffledBlockIds);
if (index >= 0) {
    shuffledBlockIds.splice(index, 1);
}
如果removeItem在ShuffledBlockID中不存在,将返回-1

矿山的重点是:

开始

开始更改数组的索引。如果大于数组的长度,则实际起始索引将设置为长度 数组的一部分。如果是负数,那么许多元素都将从末尾开始

因此,splice最终将从阵列中删除最后一个元素

要解决此问题,请使用显式测试:

var index = $.inArray(removeItem, shuffledBlockIds);
if (index >= 0) {
    shuffledBlockIds.splice(index, 1);
}

说真的,还在考虑IE8?继续。我有,但我想知道是否真的有一个Jquery解决方案可以很容易地考虑IE8——编辑了我的描述。说真的,仍然在考虑IE8吗?继续,我有,但我想知道是否有一个Jquery解决方案可以很容易地将IE8考虑进去——编辑了我的描述。