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 mobile动态添加切换开关到listview