昨天在用js做一个“记住我”的功能的时候,遇到一个问题:
如何响应用户“选中或者取消选中”checkbox的操作?
于是乎我就上网上去检索了,然后我就发现了网友们的答
案,大体思路就是 通过jQuery来响应checkbox的click事件,
然后在click中检测checkbox的checked属性,通过判断它
的true or false来判定是否选中,从而采取响应的操作。
实现的代码如下:
$("#checkme").click(function(){
//alert($("#checkme").attr("checked"));
if($("#checkme").prop("checked"))
{
alert("checked");
}
else
{
alert("no check");
}
});
checkme是我在html文件中给checkbox定义的id属性。
按照思路,我们的这段代码在用户单击checkbox时,
如果被选中就返回checked,否则就返回no checked。
Then,我就去测试我的代码了,但是在测试过程中却发现:
无论我是单击 选中checkbox还是单击取消选中checkbox
网页输出的总是“no checked”,这是怎么个情况呢?
难道 if($("#checkme").attr("checked")) 总是返回false?
不应该呀,我还是输出一下 返回 的东西吧,于是
alert($("#checkme").attr("checked"));
通过上面的代码,我发现返回值并不是 “false” ,而是
undefined,js的”==“运算符把 undefined 也认同为false了。
那么为什么会出现undefined呢?
接着我又继续在网上检索了:
jQuery 1.6以后对于一些HTML元素的固有属性的获取
我们要使用prop()方法,而不再是attr()方法。
具体哪些元素哪些属性见下图,更详细的介绍见文档(链接我就不贴了)。
OK,到此我们的问题就解决啦,谢谢阅读。