使用attr()与使用prop()设置检查状态
setting checked state using attr() vs using prop()
当我点击一系列div时,我试图选中和取消选中框。例如,我有一个包含三个div的列表,每个div对应一个复选框。当我选择一个div时,我应该选中一个框,然后用上一次单击取消选中之前选择的框。
这是我的html
<div class="trigger">1</div>
<div class="trigger">2</div>
<div class="trigger">3</div>
<input id="one" type="checkbox">
<input id="two" type="checkbox">
<input id="three" type="checkbox">
和js
$('.trigger').click(function(){
$('input[type=checkbox]').attr('checked', false);
$('input[type=checkbox]').eq($(this).index('.trigger')).attr('checked', true);
});
该过程在第一个循环中运行良好,在第一次迭代后停止工作。但如果我使用.pr()而不是.attr(),它就可以正常工作。
$('.trigger').click(function(){
$('input[type=checkbox]').prop('checked', false);
$('input[type=checkbox]').eq($(this).index('.trigger')).prop('checked', true);
});
有人能解释一下原因吗??
文档中的以下段落解释了这种行为:
然而,关于检查属性是它与选中的属性不对应。这个属性实际上对应于defaultChecked属性,并且应仅用于设置复选框的初始值。这个选中的属性值不会随复选框,而选中的属性会这样做。因此跨浏览器兼容的方法来确定复选框是否被选中使用该属性。
.prop()
和.attr()
之间存在显著差异
属性与属性
属性和属性之间的差异在特定情况下可能很重要在jQuery 1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致**从jQuery 1.**6开始,.pr()方法提供了一种显式检索属性值的方法,而.attr()则检索属性。
例如,selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected应使用.pro()方法进行检索和设置在jQuery 1.6之前,可以使用.attr()方法检索这些属性,但这不在attr的范围内这些没有相应的属性,只是属性。
注意:有关更多信息,请查看官方jQuery网站http://api.jquery.com/prop/
快乐编码:)
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 如何设置第一个子元素's的单选按钮已在轨道上检查4
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 检查是否已设置GET变量
- 选项设置文本值重复..有没有我可以检查的财产以避免重复
- 如果设置了位置,如何在每个状态下检查路由器ui,如果没有,则转到登录页
- Javascript-检查是否设置了cookie
- 至于所有输入的标签都用指定的属性来设置,例如属性检查=false
- 设置计时器并使用javascript/PHP进行检查
- 设置JavaScript变量以稍后检查定义
- Javascript代码检查:尝试设置cookie时出现令牌错误
- 获取两个输入元素的值,并检查第三个元素的值.将值设置为第四个元素
- 使用JS检查用户是否在EST时区和设置的EST时间范围内
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 设置第一个单选按钮是在车把模板中检查的
- 如何在表单中设置按钮,在提交时检查所需字段,但不刷新页面
- 设置一个复选框,其中包含使用javaScript检查的特定名称和id
- 当类型设置为JSON时,如何检查AJAX响应字符串
- 当源代码由js设置时加载检查图像
- 使用attr()与使用prop()设置检查状态