所以我有一个非常简单的HTML:
<ul>
<li value="test">test</li>
</ul>
这个jquery脚本
alert($("li").attr("value"));
它应该返回test
但它返回0,为什么会发生这种情况?
答案 0 :(得分:6)
如果要在li标签内返回文本,请:
alert($("li").text());
您不能使用'value'属性(li标签中的'value'属性只能是数字)。将其重命名为数据值:
alert($("li").attr("data-value"));
答案 1 :(得分:1)
Bassically你的选择器捕获你拥有的每个li
元素。您可能希望使您的选择器更具体。对于您可以使用的第一个<li>
-
$('li:first').attr('value');
使用id
属性也会很好。
此处需要注意的另一件事是,您尝试提取名为value的属性的值,而不是元素中的实际文本内容。如果您想要属性值,那么您就在正确的轨道上。如果您想要使用text()
或html()
尝试的内容。
如果您要处理多个元素,可能需要考虑使用$.each
函数。
var liValues = [];
$.each('li',function(index,value){
liValues.push(value.attr('value'));
});
答案 2 :(得分:1)
似乎这不起作用,因为value
根本不是li
元素的有效属性。正如您所看到的this example将属性名称更改为rel
会使您的代码生效(尽管我认为rel
无效也不...奇怪)。
您可能需要考虑将这些数据存储在其他位置。也许使用data-*
属性。
<ul>
<li data-value="test">test</li>
</ul>
alert($("li").data("value"));
答案 3 :(得分:1)
如果您要获取值,则 value
标记中的 li
属性只能是数字。否则你将永远得到 0.
您可以使用索引代替值。如下图:
.attr("value", function (currentValue, index) { return index } )
哪里
currentValue
是当前元素的值。index
是当前元素的数组索引。