从数组中删除项目而不迭代

Removing item from array without iterating

本文关键字:迭代 删除项目 数组      更新时间:2023-09-26

我已经浏览了一些文档,但我觉得有一种更简单的方法可以在不使用迭代循环的情况下从数组中删除一个项目。

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)