鑑於item
和array
,我想知道item
是否存在array
。如何檢查jQuery對象是否存在於數組中?
item
是一個jQuery對象,例如, $(".c")
。你可以假設item.length == 1
。
array
是一個jQuery對象數組,例如, [$(".a"), $(".b")]
。此數組中的每個項目可能表示0,1個或更多個對象。
這裏是我認爲實現這個:(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;
}
你能找到一個更優雅的實現?
例子:
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
是否必須是一個數組?你爲什麼不使用jQuery對象和['.index()'](http://api.jquery.com/index/)? – 2012-01-07 10:37:18
@Felix:我想你的意思是使用'$(「.a,.b」)'。聽起來很合理! – 2012-01-07 10:48:34
或者你可以使用['add()'](http://api.jquery.com/add/)構建jQuery對象。 – 2012-01-07 10:57:27