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

时间:2014-03-31 13:38:59

标签: javascript jquery arrays

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

http://jsfiddle.net/G97bt/1/

使用not()

更新了jsFiddle: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();

3 个答案:

答案 0 :(得分:10)

如下所示,使用 .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");    
});

<强> The working demo.

答案 1 :(得分:0)

你可以这样使用

$("button").click(function(){
  $("[id$=a]").hide();

  $("#"+this.id+"a").show();
});

答案 2 :(得分:0)

使用

$arrayName.splice(position, number of elements)