看看这个小提琴:http://jsfiddle.net/8HHvf/
HTML
<ul id='myUL'>
<li id="a"></li>
<li id="b"></li>
<li id="c"></li>
<li id="d"></li>
<li id="e"></li>
</ul>
JS
var arr = [];
$a=$('#a');
arr.push($a);
$a=$('#b');
arr.push($a);
$a=$('#d');
arr.push($a);
$a=$('#e');
arr.push($a);
console.log(arr);
if(jQuery.inArray($('li#b'),arr)!=-1){
console.log('aurica!!!');
}
我使用jQuery对象填充数组但是inArray方法找不到对象 这段代码假设要编写&#34; aurica !!!&#34;但它没有。
你知道为什么,更无能为力如何在数组中找到一个jQuery对象?
答案 0 :(得分:2)
通过重新分配$ a,您只需将$(&#39;#e&#39;)写入您的阵列四次。如果您:
,您可以看到这一点console.log(JSON.stringify(arr))
在现代浏览器中。
答案 1 :(得分:2)
如果要检查是否相等或想要比较,则需要按HTMLElement
,因为jQuery对象始终唯一。
$(document) != $(document);
您可以将代码简化为:
var arr = $('#a,#b,#c,#d').get();
console.log(arr);
if (jQuery.inArray($('li#b').get(), arr) != -1) {
console.log('aurica!!!');
}
.get()
将jQuery
个对象转换为HTMLElement
,可对其进行比较。
答案 2 :(得分:0)
我认为问题是if条件中缺少.val()属性。试试这个,我希望它可以帮到你
var arr = [];
var a=$('#a').val();
arr.push(a);
a=$('#b').val();
arr.push(a);
a=$('#d').val();
arr.push(a);
a=$('#e').val();
arr.push(a);
console.log(arr);
if(jQuery.inArray($('li#b').val(),arr)!=-1){
console.log('aurica!!!');
}
arr = jQuery.grep(arr, function(value) {
return !$('#b').is(value);;
});
console.log(arr);
答案 3 :(得分:0)
通过按下选择器的返回值,您将创建一个新数组并将其存储到数组变量中。为了能够在较晚的时间点对它进行比较,你实际上应该存储元素本身的任何东西(唯一的)可比较的。
以下对JS的更改应该可以解决问题,
$(function() {
var arr = [];
$a=$('#a');
arr.push($a[0]);
$a=$('#b');
arr.push($a[0]);
$a=$('#d');
arr.push($a[0]);
$a=$('#e');
arr.push($a[0]);
console.log(arr);
if(jQuery.inArray($('li#a')[0],arr)!=-1){
console.log('aurica!!!');
}
arr = jQuery.grep(arr, function(value) {
return !$('#b').is(value);;
});
console.log(arr);
//alert(y);
});