2013-05-28 85 views
0

我正在使用jQuery和它的.map功能來創建一個數組,我可以將它作爲JSON字符串發送。創建鏈接數據數組並通過JSON/AJAX發送

每當我嘗試發送時,我得到一條錯誤:e.text不是函數

這裏是我的HTML

<a class="hrefURL" href="www.google.com">Google</a> 

,這裏是jQuery的

Links: $("[class=hrefURL]").map(function (i, e) { 
     return { LinkURL: e.attr('href'), LinkText: e.text() }; 
     }).toArray() 

任何幫助將不勝感激。

謝謝!

+1

你試過e.html()嗎? – rjg132234

回答

2

無法映射函數的第二個參數是DOM元素,而不是一個jQuery對象:

$('a[class="hrefURL"]').map(function (i, e) { 
    var link = $(e); 
    return { LinkURL: link.attr('href'), LinkText: link.text() }; 
}).toArray() 

或避免額外的jQuery之旅:

$('a[class="hrefURL"]').map(function (i, e) { 
    return { LinkURL: e.href, LinkText: e.innerText }; 
}).toArray() 
+0

+1,但請注意,使用'.href'可能與IE中的相對URL有不一致的結果(例如'href =「#somevalue」'become'href =「http://foo.com/#somevalue」') 。 –

2

e是一個dom元素,而不是一個jQuery對象。

{ LinkURL: $(e).attr('href'), LinkText: $(e).text() }; 

雖然我不明白爲什麼它沒有先上e.attr