2012-11-11 29 views
4

所以我有一個非常簡單的HTML:jQuery的ATTR返回0,而不是價值

​<ul> 
    <li value="test">test</li> 
</ul>​​​​​​​​​​​​​​​​​​​​​​​ 

這jQuery腳本

alert($("li").attr("value")); 

它應該返回test但它返回0,爲什麼會出現這種情況?

回答

6

如果你想文本返回L1標籤內,則:

alert($("li").text());​ 

您不能使用「價值」屬性(在「值」屬性的L1標籤只能是數字)。其重命名爲數據值:

alert($("li").attr("data-value"));​ 
+0

沒有,我想屬性 – Linas

+0

更新我的回答 –

+0

現在的作品,但我不知道爲什麼'value'不允許 – Linas

1

低調地,您的選擇器正在捕獲您擁有的每個li元素。您可能想讓選擇器更具體。對於第一個<li>你可以使用 -

$('li:first').attr('value'); 

使用的id屬性將是一件好事。

這裏還需要注意的一點是,您正試圖提取名爲value的屬性的值,而不是元素中的實際文本內容。如果你想要屬性值,那麼你在正確的軌道上。如果您想要嘗試使用text()html()的內容。

如果您想要處理多個元素,您可能需要考慮使用$.each函數。

var liValues = []; 
$.each('li',function(index,value){ 
    liValues.push(value.attr('value')); 
}); 
+0

不起作用,看看http://jsfiddle.net/SvA8k/ – Linas

1

看來這是行不通的,因爲value根本就不是一個li元素的有效屬性。正如你可以看到this example改變屬性的名稱爲rel使你的代碼工作(雖然我不認爲rel是有效的或奇怪)。

您可能想考慮將這些數據存儲在不同的地方。也許使用data-*屬性。

​<ul> 
    <li data-value="test">test</li> 
</ul>​​​​​​​​​​​​​​​​​​​​​​​ 

alert($("li").data("value"));