說,我有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