数组中的jQuery找不到对象

时间:2014-06-15 15:13:43

标签: jquery

看看这个小提琴: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对象?

4 个答案:

答案 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);
});