从数组中删除项目而不迭代
Removing item from array without iterating
我已经浏览了一些文档,但我觉得有一种更简单的方法可以在不使用迭代循环的情况下从数组中删除一个项目。
http://jsfiddle.net/G97bt/1/
更新了 jsFiddle:使用 not()
http://jsfiddle.net/G97bt/6/
<button id="1">1</button>
<button id="2">2</button>
<button id="3">3</button>
<div id="1a">Test</div>
<div id="2a">Test</div>
<div id="3a">Test</div>
var $myList = $("#1a, #2a, #3a");
$("#1").on("click", function() {
$myList.fadeOut(); // I want to fade DIVs #2a + #3a, not ALL
$("#1a").fadeIn("slow");
});
$("#2").on("click", function() {
$myList.fadeOut(); // I want to fade DIVs #1a + #3a, not ALL
$("#2a").fadeIn("slow");
});
$("#3").on("click", function() {
$myList.fadeOut(); // I want to fade DIVs #1a + #2a, not ALL
$("#3a").fadeIn("slow");
});
这就是我设想它的功能:
$myList.remove['#1a'].fadeOut();
如下所示,通过使用 .not 从匹配元素集中删除元素:
$myList.not('#1a').fadeOut();
请注意$myList
不是一个数组,而是一个jQuery对象(即使它的行为像一个数组)。
您也可以像下面这样重写代码:
var $myList = $("#1a, #2a, #3a");
$("#1,#2,#3").on("click", function() {
$myList.not('#'+this.id+'a').fadeOut();
$('#'+this.id+'a').fadeIn("slow");
});
工作演示。
你可以这样使用
$("button").click(function(){
$("[id$=a]").hide();
$("#"+this.id+"a").show();
});
使用
$arrayName.splice(position, number of elements)
相关文章:
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Javascript - 从对象迭代和删除
- 如何通过迭代对象数组来删除某些项目
- 为什么我的jQuery .每次迭代都无法使用每个项目的属性
- 使用节点在 JSON 数组中搜索项目(最好不迭代)
- "搜索并销毁“;迭代不会'不要一次删除所有项目
- 使用for.of迭代时删除集合中的元素是否安全
- AngularJS Ng-Repeat不迭代$Scope中的项目
- 如何在角度UI树中获取某个项目的键值或迭代
- ES6:在设置/映射迭代期间从集合/映射中删除元素是否危险
- 如何使用 Javascript 将迭代器索引号附加到数组中的每个项目
- 在 6 次迭代的步长中每三个项目更改一次
- Javascript到Jquery的转换,每次迭代都会删除第一个孩子
- AngularJs:错误:用于配对项目的自定义筛选器引发错误:“达到 10 次 $digest() 迭代.流产!
- 循环(将项目存储在集合中)似乎迭代的次数比它应该的次数少
- 在 Angular 项目中迭代 JSON 响应以创建新的 $scope obj 我可以在应用程序中使用的
- 在数组上迭代时删除对象
- 最快的方式通过数组多次迭代,同时删除项目
- 画布游戏-存储/计算位置/迭代粒子/项目符号/游戏元素的最有效方法
- 从数组中删除项目而不迭代