Biorąc pod uwagę item
i array
, chciałbym wiedzieć, czy item
istnieje w array
.Jak sprawdzić, czy obiekt jQuery istnieje w tablicy?
item
to obiekt jQuery, np. $(".c")
. Możesz założyć, że item.length == 1
.
array
to tablica obiektów jQuery, np. [$(".a"), $(".b")]
. Każda pozycja w tej tablicy może reprezentować 0, 1 lub więcej obiektów.
Oto jak myślałem zaimplementować to: (live demo here)
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;
}
można znaleźć bardziej eleganckie wykonanie?
Przykład:
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
Czy to musi być tablicą? Dlaczego nie używasz obiektu jQuery i [.index() '] (http://api.jquery.com/index/)? –
@Felix: Chyba chcesz użyć '$ (". A, .b ")'. Brzmi rozsądnie! –
Lub możesz użyć ['add()'] (http://api.jquery.com/add/), aby zbudować obiekt jQuery. –