前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >获取页面中被选中元素的 JS原生方法 与 jQuery方法 分析

获取页面中被选中元素的 JS原生方法 与 jQuery方法 分析

作者头像
FEWY
发布2019-05-26 10:57:28
5.1K0
发布2019-05-26 10:57:28
举报
文章被收录于专栏:FEWYFEWY
说明

测试用的浏览器是chrome,jquery的版本用了1.11.3和3.2.0

js 原生方法
  • 方法一:
代码语言:javascript
复制
document.getElementById(elementID)["checked"]; //返回true  或者  false
  • 方法二:
代码语言:javascript
复制
document.getElementById(elementID).checked;  //返回true  或者  false
  • 方法三:(有缺陷)
代码语言:javascript
复制
document.querySelector("[checked]");  //返回DOM元素 或 null
  • 方法四:(有缺陷)
代码语言:javascript
复制
document.getElementById(elementID).hasAttribute("checked");//返回true  或者  false

解释

  • checked 属性适用于 <input type="checkbox"> 和 <input type="radio">,也就是说我们获取到input元素后可以用[ ] 或 . 的方式查看属性的值,这就是方式一 与 方式二
  • 方式三 是通过选择器的方式获取到元素,再获取属性值,但是这里有一个坑,当再input标签中写了checked属性时,可以获取到值,但是如果没有写,而是在页面上让用户点击input 然后再用这种方式获取值,是获取不到的,默认只能获取初始值
    • 这里说一下,checked属性,只要input标签有checked属性就是被选中的,无所谓值是什么,所以我们还可以通过element.setAttribute(attributename,attributevalue)来给 input标签的checked属性,随便设置一个值,这里再强调一下,无所谓值是什么,不管是null、false、”“、0,只要有值就是被选中
    • 如果需要不被选中,我们可以通过 element.removeAttribute(attributename)删除checked属 性,这里需要注意的一点就是,这两个方法需要配合使用,removeAttribute(),没法删除用户点击页面上的input元素加上的checked属性,简单的说,如果你 按 F12 能看见这个input标签上有checked属性,removeAttribute(),这个方法就能用,否则不能用
有checked属性时
有checked属性时
有checked属性测试
有checked属性测试

没有checked属性时
没有checked属性时
这里写图片描述
这里写图片描述

  • 方式4 是先获取元素,在判断他是不是有 checked 属性,但是同样他有和方法三 一样的缺陷

补充 然而说到获取属性,我们一定会想到getAttribute() 方法,返回值是属性的值 或者 null,但是这个方法来获取checked属性的值,并不好用,他有和方法三 一样的缺陷,他始终都只会获取checked属性的初始值,用户在页面上点击是不会改变他的值的!

这里写图片描述
这里写图片描述

我们在代码中 设置是 inp被选中 打开页面后 点击inp2 让inp 没选中 但是inp的值并没有发生变化


这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

jquery方法:
  • 方法一:
代码语言:javascript
复制
$(selector).get(0).checked; //返回true 或者 false
  • 方法二:
代码语言:javascript
复制
$(selector).is(':checked');  //返回true 或者 false
  • 方法三:(有缺陷)
代码语言:javascript
复制
$(selector).attr('checked');  //返回checked 或者 undefined
  • 方法四:
代码语言:javascript
复制
$(selector).prop('checked');  //返回true 或者 false

解释

  • 方法一 严格来说,好吧,不能算是jQuery的方法,这个方法先通过jQuery获取元素,但这里获取的是一个jQuery对象,所以又通过get()方法转成了DOM元素,($(selector).get(index); get() 方法获取由选择器指定的 DOM 元素),后面这个 .checked,应该算是js原生的,类似于js原生 方法二
  • 方法二 is() 方法用于查看选择的元素是否匹配选择器,:checked 是jQuery中的选择器 选取所有被选中的元素(复选框或单选按钮)这个方法是推荐使用的jQuery方法
  • 方法三 这个方法不推荐使用,缺陷和上面js方法中提到的缺陷是一样的
  • 方法四 这个方法非常推荐使用 prop() 方法设置或返回被选元素的属性和值。具体使用方法可以自己查一下 1.6版本之后有了prop() 这个方法,查看jQuery源码 看到这个方法中写道 return ( elem[ name ] = value )和return elem[ name ] 这里我们可以理解为document.getElementById(elem)[name] = value,也就是上面说的js原生方法一
总结

获取页面被选中元素的方法有很多,最后这里推荐几种简单实用的 js原生方法

  • 方法一:
代码语言:javascript
复制
document.getElementById(elementID)["checked"]; //返回true  或者  false
  • 方法二:
代码语言:javascript
复制
document.getElementById(elementID).checked;  //返回true  或者  false

jQuery方法

  • 方法一:
代码语言:javascript
复制
$(selector).get(0).checked; //返回true 或者 false
  • 方法二:
代码语言:javascript
复制
$(selector).is(':checked');  //返回true 或者 false
  • 方法三:
代码语言:javascript
复制
$(selector).prop('checked');  //返回true 或者 false
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年03月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • js 原生方法
  • jquery方法:
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档