JQuery:在数组中切换Push / Splice

时间:2016-05-31 16:30:51

标签: jquery arrays push splice

这就是我想要做的事情:

我有一个具有相同类的div列表,每次我点击其中一个div我想将相应div的ID存储在一个数组中,如:

datainput()

我想要完成的是在同一个div上的任何其他点击推送/拼接数组中的匹配ID。按ID推送/拼接切换我猜...

在数组中推送div ID不是问题,但是删除它们似乎有点问题,因为我只能清除整个数组。

如何在数组中循环以查找匹配的ID并在点击时切换它?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

例如:

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')...
});

答案 1 :(得分:0)

更新:关于原始方法:

我在这里找到了添加/删除数组值的原始方法的答案(参考):

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);

   }

也为我工作,我希望它会帮助别人。