2012-02-08 389 views
0

我想簡單地複製什麼是對jQuery的網站的。獲得方法:get方法沒有返回結果

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head> 
<body> 
    <ul> 
     <li id="foo">foo</li> 
     <li id="bar">bar</li> 
    </ul> 

<script type="text/javascript"> 
    alert($('li').get()); 
</script> 
</body> 
</html> 

它應該返回

[<li id="foo">, <li id="bar">] 

但我得到的是[object HTMLLIElement],[object HTMLLIElement]

有沒有人知道我可能會在這裏做錯嗎?

+0

我嘗試更新的答案。我以爲你需要別的東西。 – gdoron 2012-02-08 21:22:59

回答

0

簡單,選擇ul元素,並顯示它的內容與html功能:

alert($('ul').html()); 

htmldocs

說明:獲取的第一個元素的HTML內容中的一組匹配元素。

+0

這隻會輸出一個元素,但格式相同。 – 2012-02-08 21:05:22

+0

是的,只是試了一下,得到這個對象HTMLLIElement],所以問題依然存在。 – Allen 2012-02-08 21:10:48

+0

@ Allen.Now它應該工作 – gdoron 2012-02-08 21:21:12

0

一切正常:

的獲得()方法授予我們訪問每個 jQuery對象的基礎的DOM節點。

獲取返回由jQuery變量持有的DOM元素。 當你輸出DomElements時,它們變成了「HTMLLIElement」形式。

+0

所以有沒有辦法重現他們在這裏:嗯.. http://api.jquery.com/get/ – Allen 2012-02-08 21:07:25

+0

這就是你得到的。它只是輸出格式,有所不同。事實上,如果你保存你的結果,並查看它的長度屬性後,它將是2. – knub 2012-02-08 21:09:06

+0

好吧..答案是:var j =($('li')。get(0)); alert(j.innerHTML); – Allen 2012-02-08 22:52:59

0

但這就是.get所做的!它將檢索由選擇器匹配的HTML DOM元素。如果你想要jQuery對象,你應該只使用$('li')

0

你不一定會做錯什麼。

你得到什麼是它與2個<li> DOM對象的數組上調用toString(這alert會爲你做)的實際結果:

[object HTMLLIElement],[object HTMLLIElement] 

然而,什麼在API Documents ISN提到「T數組的字符串表示,而是意味着作爲陣列的當前狀態的內存中的描述:

[<li id="foo">, <li id="bar">] 

這本來只是如說像這樣的一個較短的方法:

結果是一個帶有2個DOM對象的數組,分別表示<li id="foo"><li id="bar">元素。


現在,如果你真的想在警報的標記,你必須的元素get the outer HTML。然後嘗試:

alert($('li').map(function() { return $(this).outerHTML(); }).get()); 

例子:http://jsfiddle.net/cmpwM/

+0

您可以選擇'ul'元素並使用'html'函數。看到我的答案。 – gdoron 2012-02-09 08:16:16

+0

@gdoron是和否。這可能是所有真正必要的,但它會產生一個字符串而不是一串字符串。 – 2012-02-09 16:32:36