Cho một số item
và array
, tôi muốn biết nếu item
tồn tại trong array
.Làm thế nào để kiểm tra xem đối tượng jQuery tồn tại trong mảng?
item
là đối tượng jQuery, ví dụ: $(".c")
. Bạn có thể giả định rằng item.length == 1
.
array
là một mảng đối tượng jQuery, ví dụ: [$(".a"), $(".b")]
. Mỗi mục trong mảng này có thể đại diện cho 0, 1 hoặc nhiều đối tượng.
Sau đây là cách tôi nghĩ để thực hiện điều này: (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;
}
Bạn có thể tìm thấy một thi thanh lịch hơn?
Ví dụ:
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
Liệu nó có phải là một mảng? Tại sao bạn không sử dụng một đối tượng jQuery và ['.index()'] (http://api.jquery.com/index/)? –
@Felix: Tôi đoán bạn muốn sử dụng '$ (". A, .b ")'. Nghe có vẻ hợp lý! –
Hoặc bạn có thể sử dụng ['add()'] (http://api.jquery.com/add/) để xây dựng đối tượng jQuery. –