JQuery:在数组内切换推送/拼接

Posted

技术标签:

【中文标题】JQuery:在数组内切换推送/拼接【英文标题】:JQuery: Toggle Push/Splice within Array 【发布时间】:2016-09-29 18:50:18 【问题描述】:

这就是我想要做的:

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

var array = [];

[CODE]

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

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

[CODE]

);

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

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

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

谢谢!

【问题讨论】:

一种更简单的方法是在单击时添加ID: 'on',然后在再次单击时更新 ID 并设置为“关闭”。这样,您不必从数组中删除任何项目 - 只需更新其状态。 感谢您的快速回答!这种方法有效! 【参考方案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')...
);

【讨论】:

【参考方案2】:

更新:关于原始方法:

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

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

   

对我也有用,希望对其他人有所帮助。

【讨论】:

以上是关于JQuery:在数组内切换推送/拼接的主要内容,如果未能解决你的问题,请参考以下文章

iOS:从 JSON 切换到 CoreData 以保持本地持久数据;这实用吗?数组内字典 数组内字典

Jquery 一个每隔十秒自动切换,这样循环的效果

JQuery mobile动态添加切换开关到listview

jQuery 使用 .toggle() 切换单个元素

在angularjs中选中checkall和checkbox时,推送并拼接成数组

Jquery点击,循环切换Class的效果