JQMIGRATE:jQuery.fn.attr(' selected')可能使用属性而不是属性

时间:2015-04-10 08:54:51

标签: javascript jquery

$('#operatordelivery').attr('checked', true);

您好,我目前正致力于将jQuery版本迁移到jQuery-2.1.1,我可以在控制台JQMIGRATE: jQuery.fn.attr('selected') may use property instead of attribute中看到警告。我没有清楚地知道这个警告解释了什么。有人能告诉我这个错误意味着什么吗?

2 个答案:

答案 0 :(得分:8)

来自JQMIGRATE docs:

  

JQMIGRATE:jQuery.fn.attr(' selected')可能使用属性而不是属性

     

原因:在jQuery 1.9之前,$()。attr("已检查")等有时会   使用checked | selected属性而不是属性when   与非XML元素交互,尽管浏览器和   HTML规范允许属性(当前状态)不同   来自属性(初始/默认状态)。这是一个延续   早期版本的jQuery没有提供$()。prop。

     

解决方案:通常不应将布尔属性传递给   $()。attr;除非你真的打算用$()。prop替换   更新基础HTML属性。

参考:https://github.com/jquery/jquery-migrate/blob/1.x-stable/warnings.md#jqmigrate-jqueryfnattrselected-might-use-property-instead-of-attribute

  

属性和属性之间的区别非常重要   具体情况。在jQuery 1.6之前,有时会使用.attr()方法   在检索某些属性时考虑了属性值,   这可能会导致行为不一致。从jQuery 1.6开始,.prop()   方法提供了一种显式检索属性值的方法   .attr()检索属性。

jQuery docs:http://api.jquery.com/prop/

参考答案SO:.prop() vs .attr()difference between prop() and attr() in jQuery and when to use attr() and prop()

答案 1 :(得分:8)

使用Jquery版本1.9.1+而不是

$('#operatordelivery').attr('checked', true);
$('#operatordelivery').attr('checked', 'checked');

你必须使用这个

$('#operatordelivery').prop('checked', true);

而且,而不是

$('#operatordelivery').attr('checked')

你必须使用:

$('#operatordelivery').prop('checked')