jQuery inArray()定位HTML元素

时间:2011-06-13 00:30:10

标签: jquery arrays

说,我在页面中有5个段落。

如果我执行:

p_array=$('p');
second_p=$('p:eq(1)');
$.inArray(second_p,p_array);

我得-1。 有什么解释吗?

2 个答案:

答案 0 :(得分:4)

p_arraysecond_p都不是数组。

它们是jQuery对象。

更具体地说,p_array是一个包含一组5个DOM节点的jQuery对象。 second_p是一个jQuery对象,包含一组1个DOM节点。

$.inArray可以在这些jQuery节点集上运行,但是你无法将集合与集合进行比较。

如果使用数组下标运算符jQueryObj[i])提取该DOM节点,则不再将集合与集合进行比较:

var p_array=$('p');
var second_p=$('p:eq(1)');
alert($.inArray(second_p[0], p_array)); // result: 1

观看现场演示here

答案 1 :(得分:1)

p_arraysecond_p都是类似数组的jQuery对象。您想要提取<p>的实际DOM节点并测试它:

$.inArray(second_p[0], p_array);

该调用会按预期返回1