jQuery和.attr('value')的麻烦

时间:2009-11-19 19:42:59

标签: jquery html

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

<ul>
    <li value='red'>red</li>
    <li value='grn'>green</li>
    <li value='prp'>purple</li>
    <li value='blu'>blue</li>
</ul>

我需要检索列表项的值,因此转向jQuery(1.3.2):

$('li:first').val();

这会引发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”(非有效的html)以外的任何内容,它的工作正常,但如果可以的话,我会尽快保持它的有效性。有没有理由jQuery表现得像这样,或者我应该认为它是一个错误?

CNC中 我意识到value属性已经在li元素上折旧了。我遇到的真正问题是,不管它是否被折旧,我实际上使用了一个名为'value'的属性,并要求jQuery告诉我它的价值。它错误地返回-1。

4 个答案:

答案 0 :(得分:3)

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

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

这将显示如下:

5。第一项
10。第二项

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

答案 1 :(得分:2)

这可能与此有关吗? http://dev.jquery.com/ticket/4160

总结:

  

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

     

http://www.w3schools.com/tags/att_li_value.asp

     

所以原因在于jQuery之外,你可以从这个例子看到它:

     

<li id="arf" value="dog"></li>
  alert(document.getElementById("arf").value);

答案 2 :(得分:0)

@ jeerose的解释对我来说听起来似乎有道理。您无法将value=""更改为val=""的任何原因?

答案 3 :(得分:0)

value折旧

li,用于设置列表项的编号。使用其他名称有效。