JQuery:在数组内切换 Push/Splice

JQuery: Toggle Push/Splice within Array

这就是我想要做的:

我有一个 div 具有相同 class 的列表,每次我单击其中一个 div 我想存储相应 div 在数组中,类似于:

var array = [];

[CODE]

$("divID").on("click", function(){

  array.push($(this).attr("id"));

[CODE]

});

我想要完成的是任何其他点击相同的 div push/splice 数组中的匹配 ID。我猜 push/splice 按 ID 切换...

将 div ID 压入数组不是问题,但删除它们似乎有点问题,因为我只能清除整个数组。

我必须如何遍历数组才能找到匹配的 ID 并在点击时切换它?

谢谢!

如我的 OP 评论所述,更简单的方法是使用 Hash 而不是简单数组。这样,您可以在单击时添加 {ID: 'on'},然后更新 ID 并在再次单击时设置为 'off'。这样,您不必从数组中删除任何项目——只需更新其状态即可。

例如:

var hash = {};

$("divID").on("click", function(){
  var id = $(this).attr("id");

  // Turns it on
  hash[id] = 'on';               // 'on' or true

  // Alternatively, turn it off
  hash[id] = 'off';              // 'off' or false

  // You can also check its status
  // if (hash[id] == 'on')...
});

更新:关于原始方法:

我在这里找到了 adding/removing 数组值的原始方法的答案(参考):

http://www.thoughtdelimited.org/thoughts/post.cfm/jquery-tip-finding-adding-and-removing-values-from-arrays#respond

这是代码:

var index= jQuery.inArray(theValue, theArray);

//If you're not using any other Javascript library that utilizes the $ sign, you can use the $ sign 
//instead of the jQuery namespace

var index= $.inArray(theValue, theArray);
if(index== -1)
   {
     //Value not found in the array.  Add to the end of the array with push();
     theArray.push(theValue);
   }
else
   {

     //Remove from the array using splice(). Splice takes the index value of where you want to start 
     //removing items from the array as the first parameter, and then the number of item you want 
     //to remove as the second parameter.

     theArray.splice(index,1);

   }

我也成功了,希望对其他人有帮助。