jQuery 判断元素整理汇总


Posted in Javascript onFebruary 28, 2017

是否含有某 class

在表单提交之前,我们往往要利用 JavaScript 校验用户输入值,如果用户输入有误,那么我们就往该表单元素添加一个 error 的 class,再配合 CSS,该表单元素就显示为红色,以提醒用户。

最后我们还要根据是否有 error 来决定是否提交表单。怎么判断呢?如下:

<input type="text" name="username" />
<input type="text" name="password" class="error" />
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<script type="text/javascript">
<!--
alert($("input").hasClass("error"));
//-->
</script>

用 hasClass 即可。只要有一个元素具备 error 这个 class,那么就返回 true;只有所有元素都不具备 error,才返回 false。

元素是否存在

if ($("#good").length <= 0) {
  alert("不存在。");
}
else {
  alert("存在。");
}

如上,用 length 属性判断数组长度,以决定元素是否存在。

是否 checked

<input type="checkbox" checked="true" />
<input type="checkbox" checked="false" />
<input type="checkbox" checked="disabled" />
<input type="checkbox" checked="hahaha" />
<input type="checkbox" checked />
<input type="checkbox" />
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<script type="text/javascript">
<!--
$("input").each(function (){
  alert($(this).attr("checked"));
});
//-->
</script>

如上代码,有六个 input,显示为:前五个为选中状态,最后一个为未选中。

alert 时:前五个为 checked,最后一个为 undefined。

也就是说只要标签中有 checked,即为选,与其属性值无关,而 jQuery 取属性值时也是这么认的。要判断是否选中,用 attr("checked") == "checked" 即可。

不过对于 radio 要注意

<input type="radio" name="r1" checked="true" />
<input type="radio" name="r1" checked="false" />
<input type="radio" name="r1" checked="disabled" />
<input type="radio" name="r1" checked="hahaha" />
<input type="radio" name="r1" checked />
<input type="radio" name="r1" />
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<script type="text/javascript">
<!--
$("input").each(function (){
  alert($(this).attr("checked"));
});
//-->
</script>

如上代码,有六个 input,由于是 radio,且 name 相同,显示为:第五个为选中状态,其余为未选中。

alert 时:前五个为 checked,最后一个为 undefined。

所以 jQuery 在这里要注意一下,它取的值与显示情况不符。

应付 radio 更好的办法

有时候,我们只需要关心已经选中的 radio,所以可以这么做:

<input type="radio" name="r1" value="1" checked="true" />
<input type="radio" name="r1" value="2" checked="false" />
<input type="radio" name="r1" value="3" checked="disabled" />
<input type="radio" name="r1" value="4" checked="hahaha" />
<input type="radio" name="r1" value="5" checked />
<input type="radio" name="r1" value="6" />
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<script type="text/javascript">
<!--
alert($("input:radio:checked").val());
//-->
</script>

这样结果就是 5。

是否禁用

<input type="text" disabled="true" />
<input type="text" disabled="false" />
<input type="text" disabled="disabled" />
<input type="text" disabled="hahaha" />
<input type="text" disabled />
<input type="text" />
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<script type="text/javascript">
<!--
$("input").each(function (){
  alert($(this).attr("disabled"));
});
//-->
</script>

如上代码,有六个 input,显示为:前五个为禁用状态,最后一个为可用。

alert 时:前五个为 disabled,最后一个为 undefined。

也就是说只要标签中有 disabled,即为禁用,与其属性值无关,而 jQuery 取属性值时也是这么认的。要判断是否禁用,用 attr("disabled") == "disabled" 即可。

Javascript 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
js分解url参数(面向对象-极简主义法应用)
Aug 09 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
Augularjs-起步详解
Jul 08 Javascript
jquery图片放大镜效果
Jun 23 jQuery
React复制到剪贴板的示例代码
Aug 22 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
Sep 04 Javascript
你应该知道的几类npm依赖包管理详解
Oct 06 Javascript
Vue实现表格中对数据进行转换、处理的方法
Sep 06 Javascript
浅谈ng-zorro使用心得
Dec 03 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
解决vue页面刷新,数据丢失的问题
Nov 24 Vue.js
jQuery倒计时代码(超简单)
Feb 27 #Javascript
js实现图片左右滚动效果
Feb 27 #Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 #Javascript
原生js实现旋转木马轮播图效果
Feb 27 #Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 #Javascript
js实现简单的手风琴效果
Feb 27 #Javascript
jquery实现弹窗功能(窗口居中显示)
Feb 27 #Javascript
You might like
PHP用户指南-cookies部分
2006/10/09 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
JS中Attr的用法详解
2017/10/09 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python常用模块用法分析
2014/09/08 Python
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
浅析Python迭代器的高级用法
2020/07/16 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
Unix里面如何在后台运行程序
2016/10/14 面试题
动物学专业毕业生求职信
2013/10/11 职场文书
全国文明单位申报材料
2014/05/31 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
深度学习详解之初试机器学习
2021/04/14 Python
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL