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 相关文章推荐
仿163填写邮件地址自动显示下拉(无优化)
Nov 05 Javascript
JS验证身份证有效性示例
Oct 11 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
jquery的父子兄弟节点查找示例代码
Mar 03 Javascript
jQuery绑定事件-多种实现方式总结
May 09 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
JS简单实现移动端日历功能示例
Dec 28 Javascript
基于jQuery实现滚动刷新效果
Jan 09 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
js实现动态增加文件域表单功能
Oct 22 Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 Javascript
vue浏览器返回监听的具体步骤
Feb 03 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模拟HTTP认证
2006/10/09 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
python区块及区块链的开发详解
2019/07/03 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
python绘制雷达图实例讲解
2021/01/03 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
银行会计业务的个人自我评价
2013/11/02 职场文书
总经理助理岗位职责
2013/11/08 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
优秀党员个人总结
2015/02/14 职场文书
闪闪的红星观后感
2015/06/08 职场文书
病房管理制度范本
2015/08/06 职场文书
如何写好闭幕词
2019/04/02 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python