说,我在页面中有5个段落。
如果我执行:
p_array=$('p');
second_p=$('p:eq(1)');
$.inArray(second_p,p_array);
我得-1。 有什么解释吗?
答案 0 :(得分:4)
p_array
和second_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_array
和second_p
都是类似数组的jQuery对象。您想要提取<p>
的实际DOM节点并测试它:
$.inArray(second_p[0], p_array);
该调用会按预期返回1
。