关于$(".selector").attr("checked")一直返回undefined的问题解决

时间: 作者:admin 浏览:

在低版本的jquery中,checkbox是否选中可以这样获取:

$("input[type=checkbox]").attr("checked")//checked/undefined(选中/没选中)

但是在jquery高版本后再这样取值会发现取到的值一直是undefined的情况(设置还是可以的attr(“checked”,”checked”)),原因是高版本的attr()只能用来获取标签明文定义的属性,意思就是标签上面没显示出来的属性attr()都是取不到的:

<input type="checkbox" />;//undefined

但如果像下面这样写还是可以获取到的:

<input type="checkbox" checked />

或者

<input type="checkbox" checked="checked" />
<input type="checkbox" checked="" />

这两种写法都还是可以获取到checked值的,不过获取到的值是对是错就要自己测试了,选中的时候值是否等于checked,没选中的时候值是否是空,这个还真的要测试一下;所以如果是高版本的jquery建议用以下的方法来获取checked属性的值:

var isChecked=$(".selector").prop("checked");//true/false
var isChecked=$(".selector").is(":checked");//true/false

总之,使用的时候你要自己测试着使用这些方法,发现取值有问题要更换另一个试一试;当然,这里无论用attr还是prop都要考虑一下兼容性的问题,不同浏览器下取值可能会不同;作者当年也是被这个弄的有点烦,因为用prop取值在不同的浏览器下取值不同,特别是IE浏览器,有些情况是勾掉了取到的值反而是true,所以一定要做测试;让我们都做一个严谨的程序员。

微信公众号
微信公众号:
  • 前端全栈之路(微信群)
前端QQ交流群
前端QQ交流群:
  • 794324979
  • 734802480(已满)

更多文章

栏目文章


Copyright © 2014-2023 seozhijia.net 版权所有-粤ICP备13087626号-4