例如对于复选框,无论复选框状态如何,都显示为始终返回“on”。对于实际上没有“值”属性的其他输入控件,选择和textarea,它的行为,你会期望。看到:
http://jsfiddle.net/jamietre/sdF2h/4/
我不能想到一个很好的理由,为什么它不会返回true或false。如果失败,至少在选中时返回“on”,否则返回空字符串。如果没有,至少总是返回一个空字符串,假设复选框没有值属性!
显然,我知道如何使用attr获取值,但这里的情况。我正在开发一个简单的(迄今为止)C#jQuery实现在服务器上进行HTML解析,我试图完全忠实于jQuery的实现,所以它在客户端或服务器上一致地对同一个DOM。但这只是似乎很蠢,我很难让自己实际上代码“值”返回“ON”的复选框,无论什么。但如果我不,它不会是一致的。所以我想了解,有什么原因吗?它是否服务于某种目的,或者它只是某种工具?有人会使用val()方法对复选框,如果是这样,为什么?如果没有,为什么jQuery架构师决定这种方法,使它没有用?
解决方法
I can’t think of a good reason why it
wouldn’t return true or false. Failing
that,at least return “on” only when
checked,and an empty string when not.
Failing that,at least always return
an empty string,given that checkBoxes
have no value attribute!
复选框有一个value属性。在例如使用它是相当普遍。表单中的多选框,例如:
<input type="checkBox" name="foo[]" value="1" /> <input type="checkBox" name="foo[]" value="2" />
然后当用户提交表单时,服务器可以通过检查foo []数组的值来解析检查了哪些复选框。复选框的值不会更改,无论是否选中;浏览器根本不会将未选中的复选框的值发送到服务器。如果你做例如。 $(‘#your-form’)。serialize()在jQuery,它应该工作类似;它不应该包括未选中复选框的值。如果省略复选框中的值,它将默认为on。
如果你想检查在jQuery中是否选中了单个复选框,最好的描述性方法是做$(this).is(‘:checked’)