jQuery和.attr(';value';)有问题

jQuery和.attr(';value';)有问题,jquery,html,Jquery,Html,我有一个列表,每个列表项上都有一个值,如下所示: <ul> <li value='red'>red</li> <li value='grn'>green</li> <li value='prp'>purple</li> <li value='blu'>blue</li> </ul> 这会抛出一个javascript错误。我原谅jQuery,因为

我有一个列表,每个列表项上都有一个值,如下所示:

<ul>
    <li value='red'>red</li>
    <li value='grn'>green</li>
    <li value='prp'>purple</li>
    <li value='blu'>blue</li>
</ul>
这会抛出一个javascript错误。我原谅jQuery,因为li不是一个表单元素,我会用我告诉自己的“艰难方式”来完成它:

$('li:first').attr('value');
这不会抛出错误,但无论匹配哪个元素,它都会返回“-1”。显然,-1不是任何元素的值。在摆弄了几分钟以确保拼写正确后,我突发奇想尝试了一下

$('li:first').attr('Value'); //notice capital V
这将返回正确的值“red”。为了确保我没有发疯,我尝试了更多

$('li:first').attr('vAluE');
$('li:first').attr('vaLue');
$('li:first').attr('VALUE');
似乎只要不使用小写的“value”,所有混合情况的组合都可以工作。如果我将属性重命名为“value”(无效的html)以外的任何内容,它都可以正常工作,但如果可以的话,我会更快地保持它的有效性。JQuery是否有这样的原因,或者我应该认为它是一个bug?< /P> -编辑-
我意识到li元素的值属性已经贬值。我面临的真正问题是,不管它是否贬值,我实际上使用了一个名为“value”的属性,并要求jQuery告诉我它的值。它错误地返回了-1。

值仅在排序列表中使用,如下所示:

<ol>
  <li value="5">Item One</li>
  <li value="10">Item Two</li>
</ol>

第一项
第二项
这将如下所示:

五,。第一项
10项目二


这可能就是jQuery表现得很有趣的原因

值仅在有序列表中使用,如下所示:

<ol>
  <li value="5">Item One</li>
  <li value="10">Item Two</li>
</ol>

第一项
第二项
这将如下所示:

五,。第一项
10项目二


这可能就是jQuery表现得很有趣的原因

吉罗斯的解释在我看来似乎是合理的。任何你不能将
value=“”
更改为
val=“”
的原因?

@jeerose的解释对我来说似乎是合理的。您无法将
value=“”
更改为
val=“

value
的任何原因都将针对
li
进行折旧,并用于设置列表项的编号。使用另一个名称是有效的。

li
进行折旧,并用于设置列表项的编号。使用另一个名称是有效的。

这可能与此有关吗

总之:

分辨率设置为无效
在HTML4中,li的value属性提供了有序列表编号:

因此,原因不在jQuery中,您可以从以下示例中看到:


  • 警报(document.getElementById(“arf”).value)


    这可能有关系吗

    总之:

    分辨率设置为无效
    在HTML4中,li的value属性提供了有序列表编号:

    因此,原因不在jQuery中,您可以从以下示例中看到:


  • 警报(document.getElementById(“arf”).value)



    听起来似乎有道理-浏览器可能正在纠正
    UL
    value
    的错误用法,这可以解释-1。我刚刚尝试切换到,它的行为方式相同。这并不奇怪。浏览器可能希望
    LI
    有一个数值,因为这些标记中的属性有合法的用途。没错,但根据w3c,“值属性设置列表项的数量。以下列表项将从该数字开始递增。”它不打算用作选择器,而且会被贬值。你应该改为使用一个类,我不是用它作为选择器,而是用它来存储一个字符串。然而,如果我在value属性中正确地放入整数,jQuery将返回整数。我猜它被转换成一个整数。我仍然发现,更改属性的大小写会导致它返回字符串值,这是非常不正常的。听起来似乎有道理-浏览器可能正在更正
    UL
    value
    的错误用法,这可以解释-1。我刚刚尝试切换到一个,它的行为也一样。这并不奇怪。浏览器可能希望
    LI
    有一个数值,因为这些标记中的属性有合法的用途。没错,但根据w3c,“值属性设置列表项的数量。以下列表项将从该数字开始递增。”它不打算用作选择器,而且会被贬值。你应该改为使用一个类,我不是用它作为选择器,而是用它来存储一个字符串。然而,如果我在value属性中正确地放入整数,jQuery将返回整数。我猜它被转换成一个整数。我仍然发现,更改属性的大小写会导致它返回字符串值,这很不正常。当您在jquery调用中更改大小写时,我假设您也更改了HTML中定义的大小写?不,HTML中没有更改大小写,HTML 4.01中的
  • 元素不推荐使用
    value
    属性。此外,它还意味着只保存数字值,并且只保存有序列表(而不是无序列表)的
  • 。当您在jquery调用中更改大小写时,我假设您也更改了HTML中定义的大小写?不,HTML中没有更改大小写,它保留为所有小写。HTML 4.01中的
  • 元素不推荐使用
    属性。此外,它还意味着只保存数字值,并且只保存有序列表(而不是无序列表)的
  • 。没有任何特殊原因,我已经在短期内这样做了。对于jQuery返回-1的属性,我真的感到很沮丧,因为它给我的感觉就像是在撒谎