所以我有一个非常简单的html:
<ul>
<li value="test">test</li>
</ul>
而这个 jquery 脚本
alert($("li").attr("value"));
它应该返回test
,但它返回 0,为什么会这样?
所以我有一个非常简单的html:
<ul>
<li value="test">test</li>
</ul>
而这个 jquery 脚本
alert($("li").attr("value"));
它应该返回test
,但它返回 0,为什么会这样?
如果要返回 li 标签内的文本,则:
alert($("li").text());
不能使用 'value' 属性(li 标签中的 '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
正如您在此示例中看到的那样,更改属性的名称以rel
使您的代码正常工作(尽管我认为这也不rel
是有效的......奇怪)。
您可能需要考虑将这些数据存储在不同的位置。也许使用data-*
属性。
<ul>
<li data-value="test">test</li>
</ul>
alert($("li").data("value"));
如果要获取值,value
则标签中的属性li
只能是数字。否则,您将始终得到 0。
您可以使用 index 来代替 value。如下所示:
.attr("value", function (currentValue, index) { return index } )
在哪里
currentValue
是当前元素的值。index
是当前元素的数组索引。