Jquery的遍历

jQuery对象本身就是数组对象,通过jquery选择器获得的都是满足该选择器条件的元素对象的集合体,因此在常常需要对jquery对象进行遍历.这里有三种遍历Jquery的方法.

传统循环遍历

var $options = $(“option”);
for(var i=0;i<$options.length;i++){
alert(option.value);
}

jQuery对象的方法

此方式是jQuery特有的遍历方式,使用jQuery集合对象调用each方法即可遍历。
语法: jQuery对象.each( function(index,element){} )
each函数参数:每遍历一次数组,就是调用一次匿名函数
匿名函数参数: 索引,遍历到的数组元素。

var $options = $("option");
$options.each(function(index,element){
alert(index); //打印索引
alert(element); //打印$options集合对象中的每一个元素
});

jQuery的全局方法

此方式是jQuery特有的遍历方式,与上面jQuery的对象方法相似,但此处的each方法不是某
个具体jQuery对象的,而是jQuery的全局对象的each方法,名字和功能虽然相同,但语法不
同。
语法:$.each(遍历的数组,function(index,element))

each函数参数:遍历的数组,可以是jQuery对象,也可以是DOM对象

var $options = $(“option”);
$.each($options,function(index,element){
alert(index); //打印索引
alert(element); //打印$options集合对象中的每一个元素
});
<script type="text/javascript">
$(function(){
/*  
* 方式1: for循环方式
*/
var $list = $("#city li");
for(var i = 0 ; i < $list.length;i++){
//遍历数组,DOM对象,调用属性innerHTML
alert($list[i].innerHTML);
//遍历数组,DOM对象转成Jquery对象,调用方法html
alert($($list[i]).html());
}
       
      /*
      * 方式2: Jquery对象的each方法
      * Jquery对象.each(function(索引,元素))
      */
      $list.each( function(index,element){
     alert(index+"---"+$(element).html());
     });
     
      /*
      * 方式3: Jquery的each函数
      * $.each(数组, function(索引,元素))
      */
     $.each($list, function(index,element) {

alert(index+"==="+$(element).html());
     });
      });
</script>

 

jQuery的事件

常用事件

jQuery绑定事件与解帮事件

事件函数绑定
jQuery对象直接调用事件函数,例如:$("#id").click(function()){}
on(events,selector,data,fn)函数绑定

  参数events:事件名称,多个事件之间空格分开。"click mouseover"
  参数selector:绑定事件元素的子代元素,不传递参数,表示该元素自己绑定事件
  参数data:事件中要传递给响应函数的参数
  参数fn:事件相应的函数

按钮绑定点击事件

$("#btn").on("click",function () {
  alert("按钮点击事件");
});

按钮绑定多个事件

//多个事件的响应函数相同,灵活性差
$("#btn").on("click mouseover",function () {
  alert("按钮点击事件");
});
//每个事件有自己的响应函数
$("#btn").on({
  "click" : function () {
    alert("点击事件");
 },
  "mouseover":function () {
    alert("鼠标悬浮");
 }
});

为元素的子代绑定事件

//id值是d1的元素的子代d2绑定事件
//如果有多个子代,逗号分开
$("#d1").on("click","#d2",function (data) {
   alert("d2...")
});

off(events)函数解除绑定
参数:要解除的事件,多个事件空格分开,不传递参数表示解除全部事件

$("#btn").click(function () {
  $("#d1").off("click mouseover");
});

省市联动案例

<script type="text/javascript">
$(function(){
//定义区域信息
var areas =
[
["海淀区","昌平区","朝阳区"],//代表北京
["南开区","和平区","西青区"],//天津
["浦东区","浦西区","闵行区"],//上海
["xx区","yy区","zz区"]//重庆
];
//下拉菜单绑定内容变化事件
$("#city").change(function(){
//获取被选中的option属性value的值
var $val = $("#city option:selected").val();
//获取数组,变成Jquery对象
var $area = $(areas[$val]);
//添加之前清空子标签
$("#area").empty();
$("#area").append($("<option>--请选择区域--</option>"));
//遍历数组
$area.each(function(index,element){
//创建option标签
var $optionElement = $("<option></option>");
$optionElement.html(element);
//添加到省份标签中
$("#area").append($optionElement);
});
});
/*
* 另一种简化写法
*/
$("#city").change(function(){
//获取被选中的option属性value的值
var $val = $("#city option:selected").val();
//获取数组,变成Jquery对象
var $area = $(areas[$val]);

//定义变量保存字符串
var options = "<option>--请选择区域--</option>";
$area.each(function(index,element){
options+="<option>"+element+"</option>";
});
$("#area").html(options);
});
});
</script>

左右互选案例

<script type="text/javascript">
$(function(){
//按钮add绑定点击事件
//左面选中的,移动到右边
$("#add").click(function(){
//获取右边 获取选中的
$("#second").append($("#first option:selected"));
});
//按钮addall绑定点击事件
//左面全部的,移动到右边
$("#add_all").click(function(){
//获取右边 获取全部的
$("#second").append($("#first option"));
});
$("#remove").click(function(){
//获取左边 获取右边选中的
$("#first").append($("#second option:selected"));
});
$("#remove_all").click(function(){
//获取左边 获取右边全部
$("#first").append($("#second option"));

});
});
</script>

表单校验插件
网络上有许多成熟的插件共使用者参考,插件就是将jquery实现的常用操作进行封装,封装
后的“小框架“就可以叫做插件,按照插件的语法去操作可以实现很多复杂 的功能,而我们需
要做的是学会该插件的使用语法即可。
我们仅是要使用的是jquery关于表单校验的插件。
validate快速入门
找到validate中的demo目录下的index.html. 按照提供的演示文档,快速编写自己的验证。

<scripttype="text/javascript">
$(function(){
     //获取表单id,调用方法validate
    $("#empForm").validate({
      //定义验证规则
      rules:{
        //文本框的name属性,必须填写
        realname:"required"
      },
      //定义验证信息
      messages:{
        //文本框name属性,违反规则的提示
        realname:"真是姓名必填"
      }
    });
});
  </script>

使用步骤
1. 下载jquery-validation插件
2. 将该插件(也就是一个js文件)导入到我们的工程中
3. 在要使用校验插件的html中引入该js文件

4. 编写表单校验的代码
$("form表单的选择器").validate({
rules:{
对哪个name进行校验
表单项name值:校验规则, ---校验规则有已经定义好的规则
表单项name值:校验规则... ...
},
messages:{
表单项name值:错误提示信息,
表单项name值:错误提示信息... ...
}
});
常用的校验规则

自定义表单验证
注意:当错误提示信息不按照我们预想的位置显示时,我们可以按照如下方式进行设置自定
义错误显示标签放在我们需要显示的位置,当此表单项验证不通过时会将此信息自动显示出
来,jquery验证插件会自动帮助我们控制它的显示与隐藏
<lable for="html元素name值" class="error" style="display:none">错误信息
</lable>
如果设置了错误lable标签就不必在messages中设置此表单项错误提示信息了

<script type="text/javascript">
    $(function(){
   
    //获取表单id,调用方法validate
   $("#empForm").validate({
   //定义验证规则
   rules:{
   //文本框的name属性,必须填写
   realname:"required",
   //用户名文本框验证,多个规则
   username:{
   //必须填写
   required:true,
   rangelength:[5,8]
   },
  
   //密码验证规则
   psw:{
   required:true,
   minlength:6,
   maxlength:12
   },
   //确认密码定义规则
   psw2:{
   required:true,
   minlength:6,
   maxlength:12,
   equalTo:"#psw"
   },
   //性别选择定义规则
   gender:{

required:true
   },
   //年龄验证规则
   age:{
   required:true,
   range:[26,50]
   },
   //学历规则
   //由option标签的value属性决定
   edu:{
   required:true
   },
   //生日规则
   birthday:{
   required:true,
   //验证日期格式
   dateISO:true,
   //验证日期是否合法
   date:true
   },
   //兴趣爱好规则
   checkbox1:{
   required:true
   },
   //电子邮箱规则
   email:{
   required:true,
   email:true
   }
   },
   //定义验证信息
   messages:{
   //文本框name属性,违反规则的提示
   realname:"真是姓名必填",
   username:{
   required:"用户名必须填写",
   rangelength:"用户名5-8位"
   },
  
   psw:{
   required:"密码必须填写",
   minlength:"最小长度6",

maxlength:"最大长度12"
    },
    
     psw2:{
   required:"确认密码必须填写",
   minlength:"最小长度6",
   maxlength:"最大长度12",
   equalTo:"两次密码不一致"
   },
   /*
   * 性别提示规则
   * 显示位置发生错误,手动在添加label标签
   */
   gender:{
   required:"请选择性别"
   },
  
   age:{
   required:"请输入年龄",
   range:"年龄在26-50之间"
   },
   edu:{
   required:"请选择一个学历"
   },
  
   birthday:{
   required:"请填写生日",
   dateISO:"日期格式不正确",
   date:"日期非法"
   },
   checkbox1:{
   required:"请选择至少一个爱好"
   },
   email:{
   required:"必须填写邮件",
   email:"请输入正确的邮件格式"
   }
   }
   });
    });
    </script>

自定义校验规则
如果预定义的校验规则尚不能满足需求的话可以进行自定义校验规则:
自定义校验规则步骤如下:
使用
$.validator.addMethod("**校验规则名称",function(value,element,params)){}**
在rules中通过校验规则名称使用校验规则
在messages中定义该规则对应的错误提示信息
其中: value是校验组件的value值
element是校验组件的节点对象
params是校验规则的参数

//身份证号规则
cart:{
  required:true,
  cartlength:[15,18],
  cart15:true,
  cart18:true
}
//参数: 规则名称. 参数 实现逻辑
   
//身份证号码长度
$.validator.addMethod( "cartlength", function(value,element,params){
  if(value.trim().length!=15 && value.trim().length!=18){
    return false;
  }
 return true;
 } );
   
//身份证号码15位校验
$.validator.addMethod( "cart15", function(value,element,params){
    //定义15位正则规则,必须全部数字
    var reg = /^[0-9]{15}$/;
    if(value.trim().length==15){
      return reg.test(value.trim());
}
    return true;
 } );
   
//身份证号码18位校验
$.validator.addMethod( "cart18", function(value,element,params){
    //定义15位正则规则,必须全部数字
    var reg = /^[0-9]{18}|[0-9]{17}X$/;
    if(value.trim().length==18){
      return reg.test(value.trim());
   }
    return true;
} );

JQuery的入门(二)的更多相关文章

  1. jQuery简单入门(二)

    2.Dom操作 A.DOM分类 个人认为在jQuery中这些分类被弱化了,有兴趣的读者可以自行补充这方面的知识: aa.DOM Core bb.HTML -DOM cc. CSS-DOM B.jQue ...

  2. jquery 快速入门二

    ---恢复内容开始--- 操作标签 样式操作 样式类 addClass();//添加指定的CSS类名. removeClass();//移除指定的类名. hasClass();//判断样式不存在 to ...

  3. 从零开始学习jQuery (一) 入门篇

    本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些 ...

  4. 第一百九十一节,jQuery EasyUI 入门

    jQuery EasyUI 入门 学习要点: 1.什么是 jQuery EasyUI 2.学习 jQuery EasyUI 的条件 3.jQuery EasyUI 的功能和优势 4.其他的 UI 插件 ...

  5. day 48 jQuery快速入门

    jQuery快速入门   jQuery jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Ev ...

  6. JQuery Mobile入门——设置后退按钮文字(转)

    http://www.tuicool.com/articles/AZnYVz JQuery Mobile入门——设置后退按钮文字 时间 2013-01-09 20:24:28  CSDN博客原文  h ...

  7. 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示

    前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...

  8. 极客技术专题【007期】:jQuery初学者入门 - jQuery Event

    日期:2013-8-19  来源:GBin1.com 技术专题介绍 专题:jQuery初学者入门[第三讲:jQuery Event] 分享人:极客标签技术编辑 -Lana (请站内关注分享人) 授课时 ...

  9. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

随机推荐

  1. ZooKeeper的工作原理

     ZooKeeper是一个分布式的应用程序协调服务.   2 ZooKeeper的工作原理 Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步.实现这个机制的协议叫做Zab ...

  2. Oracle Spatial分区应用研究之一:分区与分表查询性能对比

    1.名词解释 分区:将一张大表在物理上分成多个分区,逻辑上仍然是同一个表名. 分表:将一张大表拆分成多张小表,不同表有不同的表名. 两种数据组织形式的原理图如下: 图 1分表与分区的原理图 2.实验目 ...

  3. filter和map内置函数

    filter filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回 ...

  4. (一)Python的特点(优点和缺点)

    Python 是一种面向对象.解释型的脚本语言,同时也是一种功能强大而完善的通用型语言.相比其他编程语言(比如 Java),Python 代码非常简单,上手非常容易. Python优点: (1)简单易 ...

  5. Logstash+ Kafka基于AOP 实时同步日志到es

    Logstash是一个开源数据收集引擎,具有实时管道功能.Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地,logstash丰富的插件(logstash-in ...

  6. LeetCode 238. 除自身以外数组的乘积(Product of Array Except Self)

    238. 除自身以外数组的乘积 238. Product of Array Except Self 题目描述 LeetCode LeetCode238. Product of Array Except ...

  7. [转帖]中兴GoldenDB数据库开始了第一轮中信银行核心业务系统迁移落地

    中兴GoldenDB数据库开始了第一轮中信银行核心业务系统迁移落地 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...

  8. 如何使用websocket实现前后端通信

    websocket通信是很好玩的,也很有用的的通信方式,使用方式如下: 第一步由于springboot很好地集成了websocket,所以先在在pom.xml文件中引入依赖 <dependenc ...

  9. 解决Jupyter notebook安装后不自动跳转网页的方法

    在安装完Jupyter notebook后,有童鞋说出现了各种不友好的问题,鉴于此情况,个人先随手写出以下三种情况,并给出解决方法: 题外建议:请使用谷歌浏览器为默认浏览器 一.对于弹不出浏览器的解决 ...

  10. python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

    12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...