作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
HTML:
<input type="checkbox" />
<span id="test">Click here</span>
JS:
$("#test").click(function () {
if ($(":checkbox").attr("checked") == undefined) {
$(":checkbox").attr("checked", "checked")
} else {
$(":checkbox").removeAttr("checked")
}
});
fiddle :Link - v1.8.3
这工作得很好,但是,如果我将 jquery 版本更改为 1.9.1,则不再选中该复选框。这是什么问题?
fiddle :Link - v.1.9.1
虽然 inspect 元素
显示复选框正在切换属性,但如果我在控制台,我得到 false
作为输出
最佳答案
checked
是一个属性,当 bool 属性如 disabled
或 checked
时,您应该使用 prop
方法设置为一个元素,该值被映射到该元素的相关 DOM 属性(浏览器执行此操作),并且 attr
和 removeAttr
方法执行此操作不更改元素的属性,从 jQuery 1.6 开始,要修改属性,应使用 prop
方法而不是 attr
。
$("#test").click(function () {
$('input[type=checkbox]').prop('checked', function(i, state){
return !state;
});
});
关于jquery - jQuery v1.9.1 的 .attr() 复选框问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15860756/
我是一名优秀的程序员,十分优秀!