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 相关文章推荐
JavaScript中的Array对象使用说明
Jan 17 Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 Javascript
JS匿名函数实例分析
Nov 26 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
Feb 27 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
Feb 09 Javascript
你点的 ES6一些小技巧,请查收
Apr 25 Javascript
微信小程序 导入图标实现过程详解
Oct 11 Javascript
vue实现element表格里表头信息提示功能(推荐)
Nov 20 Javascript
js验证账户名是否重复
May 26 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
Aug 06 Javascript
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写的带缓存数据功能的mysqli类
2012/09/06 PHP
php查看网页源代码的方法
2015/03/13 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
Opacity.js
2007/01/22 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
原生实现一个react-redux的代码示例
2018/06/08 Javascript
详解一个小实例理解js原型和继承
2019/04/24 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
Python中bisect的用法
2014/09/23 Python
在Python中处理XML的教程
2015/04/29 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
企业形象策划方案
2014/05/29 职场文书
团拜会策划方案
2014/06/07 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server