Ale*_* Dn 4 javascript jquery jquery-selectors
我有一个非常简单的例子jsfiddle:
HTML:
<input type="text"/>
<input type="text" value="aaa"/>
Run Code Online (Sandbox Code Playgroud)
JS:
$("input:first").val("aaa");
alert($("input[value='aaa']").length);?
Run Code Online (Sandbox Code Playgroud)
为什么Chrome和IE会返回不同的结果?为什么Chrome中的jQuery在使用jQuery设置时无法识别"价值"?
我怎么解决呢?我需要Chrome将返回与IE完全相同的结果.
编辑:我没有接受我的回答,因为在考虑了一点之后,我仍然不理解一些事情(也许我对几个部分是错的):
1)据我所知,浏览器在文本框中显示的文本应始终为"value"属性,因为如果我提交表单,文本框和其他输入字段中显示的"值"将提交给服务器(如果它们不是禁用).
2)因此,如果文本框中显示的文本应存储在"值"中以便提交,那么如果$("input[type='text']").val("aaa")将文本"aaa"分配给"value"属性,则很自然,因为它可能会在以后提交.如果是这样,为什么$("input[value='aaa']")不拿起它?
3)其他一些东西....当我不使用jQuery的"val"方法,而是直接将文本输入到文本框中,那么它不会转到"value"属性?我做了另一个例子,我不使用"val"将文本分配给文本框.我直接在文本框中输入它,然后$("input[value='aaa']")再不接它.
这对我来说非常奇怪......我理解属性和属性之间的区别,但是由于HTML表单的性质,我不明白为什么"val"没有赋值给属性,当直接输入时,它不会去将"值"属性赋予.
顺便说一句:在http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/我发现以下内容:
不应使用.attr()和.prop()来获取/设置值.使用.val()方法(尽管使用.attr("value","somevalue")将继续工作,就像1.6)之前一样.
他们说"val"应该设置属性......或者我的英语不允许我理解它?
请解释我:)
我想这是因为.val设置属性上input.然后使用[value="aaa"]is查看input实际没有改变的属性.如果您更改jQuery用于将输入值设置为的方式:
$("input:first").attr("value", "aaa");
并再检查长,你会得到你期待的结果.
小提琴:http://jsfiddle.net/gromer/ZnbpE/
属性和属性之间的区别:http: //blog.jquery.com/2011/05/12/jquery-1-6-1-released
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |