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 相关文章推荐
showModalDialog在谷歌浏览器下会返回Null的解决方法
Nov 27 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
Apr 26 Javascript
JavaScript的ExtJS框架中表格的编写教程
May 21 Javascript
使用Angular.js实现简单的购物车功能
Nov 21 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
vue+element-ui+axios实现图片上传
Aug 20 Javascript
vue从零实现一个消息通知组件的方法详解
Mar 16 Javascript
Axios代理配置及封装响应拦截处理方式
Apr 07 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
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
Js基础学习资料
2010/11/23 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
javascript设计模式 接口介绍
2012/07/24 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
Python中DJANGO简单测试实例
2015/05/11 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python中zip函数如何使用
2020/06/04 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
C#面试常见问题
2013/02/25 面试题
面试求职的个人自我评价
2013/11/16 职场文书
前台接待岗位职责
2013/12/03 职场文书
大学生实习思想汇报
2014/01/12 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
MySQL主从切换的超详细步骤
2022/06/28 MySQL