2013-07-19 30 views
1

有在HTML文件3標籤a。如下:我想第一個DOM對象,但不是第一目標的房地產

<nav id="navigation"> 
    <a href="#" tabindex="1" class="active_nav">nav1</a> 
    <a href="#" tabindex="2">nav2</a> 
    <a href="#"tabindex="3">nav3</a> 
</nav> 

我用jQuery選擇期望獲得第一<a>這樣

alert($("#navigation >a")[0]); 

,但它顯示的第一個<a>的href屬性!!!!!

如果我更換<a><div>,它的工作原理。

<nav id="navigation"> 
    <div >nav1</div> 
    <div >nav2</div> 
    <div >nav3</div> 
</nav> 

當alert($(「#navigation> div」)[0]);它顯示第一個DOM對象。 我覺得很奇怪。幫我!

回答

1

這是因爲HTMLAnchorElementtoString只是返回href屬性。

$("#navigation > a")[0];   // HTMLAnchorElement 
$("#navigation >a")[0].href;  // "http://example.com/#" 
$("#navigation >a")[0].toString(); // "http://example.com/#" 

alert只需要一個字符串作爲參數,所以toString被自動調用你的元素,你最終看到的href財產。

您應該使用console.log用於調試,不alert。它有用很多倍。

+0

爲什麼$( 「#導航>一」)[0]的.text( 「世界你好」)不起作用??? – bohan

+0

@bohan因爲'.text'是一個jQuery函數,所以你需要一個jQuery對象來使用它,而不是HTMLAnchorElement。以下兩種方法都可以工作:'$($(「#navigation> a」)[0])。text(「..」);'這個更好:'$(「#navigation> a」)。eq (0)的.text( 「..」)'。 – Paulpro

+0

非常感謝你! – bohan

0

試試這些。

alert($("#navigation > a").first().text()); 

alert($("#navigation > a").first().html()); 
0

方括號表示一個不同的事情,它訪問在匹配組的第一個對象的HTMLElement。您要查找的是.eq(特別.eq(0))和像@Paulpro說,alerttoString

參考:http://api.jquery.com/eq/

相關問題