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