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

Sop*_*ake 2 javascript arrays jquery

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

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

更新了jsFiddle:http://jsfiddle.net/G97bt/6/使用not()


<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");    
});
Run Code Online (Sandbox Code Playgroud)

这就是我想象它会起作用的方式:

$myList.remove['#1a'].fadeOut();
Run Code Online (Sandbox Code Playgroud)

xda*_*azz 10

如下所示,通过使用.not从匹配元素集中删除元素:

$myList.not('#1a').fadeOut();
Run Code Online (Sandbox Code Playgroud)

注意$myList不是数组而是jQuery对象(即使它的行为类似于数组).

您也可以重写您的代码,如下所示:

var $myList = $("#1a, #2a, #3a");

$("#1,#2,#3").on("click", function() {
    $myList.not('#'+this.id+'a').fadeOut();
    $('#'+this.id+'a').fadeIn("slow");    
});
Run Code Online (Sandbox Code Playgroud)

工作演示.