Wie um zu überprüfen, ob jQuery-Objekt vorhanden sind im array?

Gegeben item und ein array ich würde gerne wissen, ob item existieren in array.

item ist ein jQuery-Objekt, z.B. $(".c"). Sie können davon ausgehen, dass item.length == 1.

array ist ein array von jQuery-Objekten, z.B. [$(".a"), $(".b")]. Jedes Element in diesem array darstellen kann 0, 1 oder mehrere Objekte.

Hier ist, wie ich dachte, um dies zu implementieren: (live-demo hier)

function inArray(item, arr) {
    for (var i = 0; i < arr.length; i++) {
        var items = $.makeArray(arr[i]);

        for (var k = 0; k < items.length; k++) {
            if (items[k] == item[0]) {
                return true;
            }
        }
    }

    return false;
}

Finden Sie eine elegantere Umsetzung?


Beispiel:

HTML:

<div class="a">Hello</div>
<div class="a">Stack</div>
<div class="a">Overflow</div>

<div class="b">Have</div>
<div class="b">a</div>
<div class="b">nice</div>
<div class="b">day!</div>

<div class="c">Bye bye</div>

JS:

console.log(inArray($(".a").eq(2), [$(".a"), $(".b")])); //true
console.log(inArray($(".b").eq(3), [$(".a"), $(".b")])); //true
console.log(inArray($(".c"), [$(".a"), $(".b")]));       //false
console.log(inArray($(".a").eq(2), [$(".b")]));          //false
console.log(inArray($(".a").eq(2), []));                 //false
console.log(inArray($(".c"), [$("div")]));               //true
Muss es ein array sein? Warum verwenden nicht Sie ein jQuery-Objekt und .index()?
Ich denke mal du meinst die Verwendung $(".a, .b"). Klingt vernünftig!
Oder Sie können add() aufzubauen, das jQuery-Objekt.

InformationsquelleAutor Misha Moroshko | 2012-01-07

Schreibe einen Kommentar