首页 > Web开发 > 详细

jquery版本间兼容性:checkbox选中状态

时间:2014-08-05 23:14:20      阅读:678      评论:0      收藏:0      [点我收藏+]

最近在学习Jquery,发现attr不太好用,从网上搜了下终于知道其原因,记下备查。

以下为以为网友在js贴吧的内容:

以<input type="checkbox" id="all"/>为例子取值的例子
$("#all").attr("checked")
在1.6前(含1.6),返回值是boolean类型的true或false;
在1.6后,返回值是"checked"或undefined。

再来看赋值的例子
$("#all").attr("checked",xxxx)
当xxxx为false或null时,取消选中;否则,选中。
所以,$("#all").attr("checked", undefined)执行的结果是:checkbox变成选中状态。

综合attr取值和赋值的例子,再考虑下面第三个常用场景:全选的例子
$("#all").click(function() {
var flag = $(this).attr("checked");
$("input.single").attr("checked",flag);
});
当用jquery 1.6前的版本时,flag是true|false;可以得到我们想要的结果。
当用1.6后的版本时,flag是"checked"| undefined;结果是复选框总是被选中。

兼容性解决方案:
方案一:
var flag = $(this).attr("checked") || false;
这样,flag的值也是true 或 false了。方案二:is(":checked")


另外,1.6后,对dom属性的更改,jquery推荐使用prop()代替attr()。
prop()方法在jquery 1.6后提供。

下列图片为jquery 1.7.2和1.4.2的demo演示:

bubuko.com,布布扣

jquery版本间兼容性:checkbox选中状态,布布扣,bubuko.com

jquery版本间兼容性:checkbox选中状态

原文:http://my.oschina.net/u/877170/blog/298360

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!