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的属性,我真的感到很沮丧,因为它给我的感觉就像是在撒谎