从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别

Posted 小蒋不素小蒋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别相关的知识,希望对你有一定的参考价值。

 

背景:

 

清空input file标签选中值时,分别用了以下方法,发现有的对有的错:

】$("#file")[0].value = "";
        【】$("#file")[0].value = null;

        【×】$("#file").attr("value","");
        【×】$("#file").attr("value",null);
        
        【】$("#file").val("");
        【】$("#file").val(null);

 

  为什么同样是改变value值,得到的结果却不同呢?

 

释疑:

 

  查阅stackoverflow《jQuery .val() vs .attr(“value”)》Question,里面解答如下:

 

The gist is that .attr(...) is only getting the objects value at the start (when the html is created). val() is getting the object‘s property value which can change many times.

   翻译过来就是:

.val()设置的是input的value属性,input是HTMLInputElement的实例,value是通过setter方法定义的,当被赋值时,就会把值写到input里面;而改变value属性的方法,实际上操作的是dom的value属性,会触发浏览器的repaint,更新input的值。

 

 

参考资料:

forms - jQuery .val() vs .attr("value") - Stack Overflow

 

以上是关于从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 API “input type='file'” 标签使用本地文件更改视频源...没有 Jquery 或外部库

jquery选择器之表单选择表单对象属性

input标签的accept属性JQuery绑定keyDown事件

jQuery小知识2

从 jQuery Mobile 重置值

重置 jquery 选项卡