说,我有5个段落在页面中。jQuery inArray()定位HTML元素
如果我执行:
p_array=$('p');
second_p=$('p:eq(1)');
$.inArray(second_p,p_array);
我得-1。 任何解释?
说,我有5个段落在页面中。jQuery inArray()定位HTML元素
如果我执行:
p_array=$('p');
second_p=$('p:eq(1)');
$.inArray(second_p,p_array);
我得-1。 任何解释?
p_array
和second_p
都不是数组。
他们是jQuery对象。
更具体地说,p_array
是一个包含一组5个DOM节点的jQuery对象。 second_p
是一个包含一组1个DOM节点的jQuery对象。
$.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。
我明白了,真的谢谢。顺便说一下,好的网站! – xiaohan2012 2011-06-14 12:39:01
@ xiaohan2012:是的,我们喜欢它:) – 2011-06-14 12:39:29
p_array
和second_p
都是数组式的jQuery对象。要提取为<p>
实际的DOM节点并对其进行测试,如:
$.inArray(second_p[0], p_array);
这叫我回报1
,符合市场预期。
'second_p'是一个jQuery对象,'p_array'是一个包含DOM节点的类数组对象...因此,'p_array'显然不包含'second_p'。 – 2011-06-13 00:36:42
为什么不'second_p = p_array.eq(1);'?你正在做不必要的两次查找。 – 2011-06-13 00:38:25