jQuery高级

1. jQuery动画

1.1 基本显示动画

1.1.1 方法
方法名称解释
show([speed,[easing],[fn]])显示元素方法
hide([speed,[easing],[fn]])隐藏元素方法
toggle([speed],[easing],[fn])切换元素方法,显示的使之隐藏,隐藏的使之显示

其中:

speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000);

easing:用来指定切换效果,默认是"swing",可用参数"linear"(一般可以不用设置);

fn:在动画完成时执行的函数,每个元素执行一次

本质:控制元素高度、宽度和透明度来实现

1.1.2 示例代码

按钮已用onclick注册事件

//隐藏事件
function hideFn() {
	$("#showDiv").hide(2000);
}
//显示事件
function showFn() {
	$("#showDiv").show(2000);
}
//切换事件
function toggleFn() {
	$("#showDiv").toggle(2000);
}

1.2 滑动效果

1.2.1 方法
方法名称解释
slideDown([speed,[easing],[fn]])向下滑动展现方法
slideUp([speed,[easing],[fn]])向上滑动隐藏方法
slideToggle([speed],[easing],[fn])切换元素方法,显示的使之隐藏,隐藏的使之显示

其中的参数与显示效果一致。

本质:滑动效果是通过控制元素的高度来实现

1.2.2 示例代码

按钮已用onclick注册事件

//向上滑动隐藏事件
function slideUpFn() {
	$("#showDiv").slideUp(2000);
}
//向下滑动显示事件
function slideDownFn() {
	$("#showDiv").slideDown(2000);
}
//切换事件
function slideToggleFn() {
	$("#showDiv").slideToggle(2000);
}

1.3 淡入淡出效果

1.3.1 方法
方法名称解释
fadeIn([speed,[easing],[fn]])淡入显示方法
fadeOut([speed,[easing],[fn]])淡出隐藏方法
fadeToggle([speed],[easing],[fn])切换元素方法,显示的使之隐藏,隐藏的使之显示

其中的参数与显示效果一致。

本质:通过修改元素的css样式的透明度来实现

1.3.2 示例代码

按钮已用onclick注册事件

//淡出事件
function fadeInFn() {
	$("#showDiv").fadeIn(2000);
}
//淡入事件
function fadeOutFn() {
	$("#showDiv").fadeOut(2000);
}
//切换事件
function fadeToggleFn() {
	$("#showDiv").fadeToggle(2000);
}

2. jQuery遍历

2.1 使用js遍历方法

  • 语法

    var jquery对象 = $("选择器");
    for (var i=0;i<jquery对象.length;i++) {
        //取出元素的方式:$jq对象名[i]
        //注意,这种方式取出的元素是js对象,需要转换
    }
    

2.2 jQuery对象方法遍历(推荐)

  • 语法

    jquery对象.each(function(index,element){
        //操作取出的元素对象
        //注意,element是js对象,使用时需要转换
    });
    

    其中:

    index:就是元素在集合中的索引
    element:就是集合中的每一个元素对象

  • 注意:遍历函数function()在每次循环都会运行

2.3 jQuery的全局方法遍历

  • 语法

    $.each(jquery对象,function(index,element){
        //操作取出的元素对象
        //注意,element是js对象,使用时需要转换
    });
    

    其中的参数含义同上。

    $:jQuery全局对象

2.4 for of语句遍历

  • JavaScript5的新特性,新版本浏览器才支持,一般旧版本浏览器不支持,故不建议使用

  • 语法

    for(var element of jquery对象或js数组或字符串){
        //操作变量的代码
    }
    

    其中:

    element: js数组/jQuery对象/字符串的每个元素

2.5 遍历示例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>sample01_遍历jQuery</title>
    <style type="text/css"></style>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        /*1.普通方式*/
        $(function () {
            var lis = $("li");
            for (var i=0;i<lis.length;i++) {
                //注意:取出来的是js对象,需要转换
                alert(i+"+"+$(lis[i]).html());
            }
        });

        /*2.jquery对象遍历*/
        $(function () {
            $("li").each(function(index,element) {
                //注意:element是js对象
                alert(index+"+"+$(element).html())
            })
        });

        /*3.jQuery全局方法遍历*/
        $(function () {
            $.each($("li"),function (index,element) {
                //注意:element是js对象
                alert(index+"+"+$(element).html())
            })
        });

        /*4.for of语句遍历*/
        $(function(){
            var lis = $("li");
            for(var element of lis) {
                alert($(element).text());
            }
        });
    </script>
</head>
<body>
<ul id="stand">
    <li>太白金星</li>
    <li>世界</li>
    <li>隐者之紫</li>
    <li>黄金体验</li>
</ul>
</body>
</html>

3. jQuery事件绑定与解绑

3.1 on绑定事件

3.1.1 on绑定单个事件
  • 语法

    jQuery元素对象.on("事件名称",function(){
    	//逻辑代码
    })
    

    其中:事件名称是jQuery的事件方法的方法名称,例如:click、mouseover、mouseout、focus、blur等

3.1.2 on绑定多个事件(重要)
  • 格式:

    //jquery对象.on(js对象)
    jquery对象.on({事件名1:function(){},事件名2:function(){},...});
    

3.2 off解绑事件

  • 使用off只能解除动态js代码注册的事件,不能解除在html标签上直接静态方法注册的事件
3.2.1 off解绑单个事件
  • 语法

    jQuery元素对象.off("事件名称");
    
3.2.2 off解绑多个事件
  • 语法

    jQuery元素对象.off("事件名1 事件名2 ...");
    
3.2.3 off解绑所有事件
  • 语法

    jQuery元素对象.off();
    
on和off示例代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>on注册事件/off解绑事件</title>
    <style type="text/css"></style>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        /*
        使用on注册事件
         */
        //绑定单一事件。
        // 需求:点击事件,按钮背景变绿
        $(function () {
           $("#btn").on("click",function () {
               $("#btn").css("background-color","green");
           })
        });
        //绑定多个事件。
        //需求:鼠标移入变黄,移出变红
        $(function () {
            $("#btn").on({
                //鼠标移入事件
                "mouseover":function () {
                    $("#btn").css("background-color","yellow");
                },
                //鼠标移出事件
                "mouseout":function () {
                    $("#btn").css("background-color","red");
                }
            
            })
        });
        /*
        使用off解除事件
         */
        //解除单一事件
        //移除鼠标点击事件
        function offOne() {
            $("#btn").off("click");
        }
        //解除多个事件
        //移出鼠标移入移出事件
        function offMore() {
            $("#btn").off("mouseover mouseout");
        }
        //解除所有事件
        function offAll() {
            $("#btn").off();
        }
    </script>
</head>
<body>
<input id="btn" type="button" value="使用on绑定点击事件" onclick="clickEvent();"/>
<input id="btn1" type="button" value="使用off解绑click事件" onclick="offOne();"/>
<input id="btn2" type="button" value="使用off解绑鼠标移入与移出事件" onclick="offMore();"/>
<input id="btn3" type="button" value="使用off解绑所有事件" onclick="offAll();"/>
</body>
</html>

3.3 事件切换

  • 概念:同时给html元素绑定多个事件
  • 常用的有四种方法:普通写法、on绑定事件写法、链式写法、切换函数写法。
  • 下面通过一个示例案例展示
3.3.1 示例案例

需求:页面div默认显示红色,鼠标移入显示绿色,鼠标移出恢复蓝色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件切换</title>
    <style type="text/css"></style>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        /*
        使用四种事件切换,本质就是用绑定多个事件
         */
        //1.普通方式
       *$(function () {
            $("#testDiv").mouseover(function () {
                $(this).css("background-color","green");
            });
            $("#testDiv").on("mouseout",function () {
                $(this).css("background-color","deepskyblue");
            });
        });

        //2.on绑定多个事件
        $(function () {
            $("#testDiv").on({
                "mouseover":function () {
                    $(this).css("background-color","green");
                },
                "mouseout":function () {
                    $(this).css("background-color","deepskyblue");
                }
            })
        });

        //3.链式写法:绑定了事件之后仍是一个jQuery对象,可以使用链式写法
        //3.1 普通写法的链式写法
        $(function () {
            $("#testDiv").mouseover(function () {
                $(this).css("background-color","green");
            }).mouseout(function () {
                $(this).css("background-color","deepskyblue");
            });
        });
        //3.2 on绑定事件的链式写法
        $(function () {
            $("#testDiv").on("mouseover", function () {
                $(this).css("background-color", "green");
            }).on("mouseout", function () {
                $(this).css("background-color", "deepskyblue");
            })
        });
        //3.3 普通写法与on绑定事件混合使用的链式写法,不推荐使用

        //4.切换函数
        //jQuery对象.hover([over,]out) 仅局限与鼠标移入移出事件
        $(function () {
            $("#testDiv").hover(
                //第一个函数固定是鼠标移入事件
                function () {
                    $(this).css("background-color", "green");
                },
                //第二个函数固定是鼠标移出事件
                function () {
                    $(this).css("background-color", "deepskyblue");
                }
            )
        });
    </script>
</head>
<body>
<div id="testDiv" style="width: 300px;height: 150px;background: deepskyblue;">
    鼠标移入变绿,移出恢复
</div>
</body>
</html>
切换函数写法
  • 语法

    jQuery对象.hover([over,]out)
    

    其中,over代表鼠标移入事件触发的函数,out代表鼠标移出事件触发的函数

  • 注意:只能应用于鼠标移入移出事件

4. jQuery插件

4.1 插件机制

  • 利用jQuery提供的jQuery.fn.extend()和jQuery.extend()方法,扩展jQuery的功能。
4.1.1 语法
语法解释
jQuery.fn.extend(js对象)对jQuery对象进行方法扩展,使用jQuery对象调用
jQuery.extend(js对象)对jQuery全局进行方法扩展,使用全局对象$调用
4.1.2 方法拓展案例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义jQuery插件</title>
    <style type="text/css"></style>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        /*
        Jquery扩展机制有2种
        1.对jq对象扩展,格式:$.fn.extend(js对象);
        2.对jq全局对象扩展,格式:$.extend(js对象);
         */

        /*第一种对jq对象扩展*/
        $.fn.extend({
            check:function () {
                $(this).prop("checked",true);
            },
            uncheck:function () {
                $(this).prop("checked",false);
            }
        });
        //那么给选中按钮和取消选中按钮就能直接反射check和unchecked的功能
        function checkFn() {
            //原来的做法是 $(":checkbox").prop("checked",true);
            $(":checkbox").check();
        }
        function uncheckFn() {
            $(":checkbox").uncheck();
        }

        /*第二种对jq全局对象扩展*/
        //jq本身没有求最大最小的功能,需要扩展功能
        $.extend({
            max:function (a,b) {
                return a>b?a:b;
            },
            min:function (a,b) {
                return a<b?a:b;
            }
        });
        //使用扩展功能
        var min = $.min(3,2);
        alert("3和2的最小值:" + min);
        var max = $.max(5,8);
        alert("5和8的最大值:" + max);
    </script>
</head>
<body>
<input id="btn-check" type="button" value="点击全选" onclick="checkFn()">
<input id="btn-uncheck" type="button" value="点击取消全选" onclick="uncheckFn()">
<br/>
<input type="checkbox" value="football">足球
<input type="checkbox" value="basketball">篮球
<input type="checkbox" value="volleyball">排球

</body>
</html>

4.2 表单校验插件validator

4.2.1 表单校验插件的基本使用
  1. 下载插件并导入工程;

  2. html引入该插件js文件

  3. 编写代码,语法如下:

    $("form表单的选择器").validate({
    	rules:{
    		表单项name值:校验规则,
    		表单项name值:{
            	校验规则1:参数值1,
            	校验规则2:参数值2...
        	},...
    	},
    	messages:{
    		表单项name值:错误提示信息,
    		表单项name值:{
            	校验规则1:错误提示信息1,
            	校验规则2:错误提示信息2...
        	},...
    	}
    });
    

    其中:rules是对表单项校验的规则,messages是对应的表单项校验失败后的错误提示信息。

    • 如果messages不写,内置的校验规则有默认的错误提示信息。默认是英文,可以通过导入本地化语言插件改为中文。
  4. 如果想要自定义错误显示标签的位置,则:

    第一步设置如下lable标签:

<lable for="html元素name值" class="error" style="display:none">错误信息</lable>
第二步将lable标签放再想要显示的位置。
4.2.2 表单校验插件自定义校验方法

使用步骤:

  1. 自定义校验规则:

    $.validator.addMethod("校验规则名称",function(value,element,params)){
        //校验代码
        //如果返回false,校验失败,显示对应的错误信息;
        //如果返回true,校验通过;
    }
    

    其中:

    value:当前校验组件的value值;
    element:当前校验组件的js对象;
    params:当前自定义校验规则传递过来的参数;

  2. 在rules中通过校验规则名称使用校验规则。

  3. 在messages中定义该规则对应的错误提示信息。

5. jQuery综合案例

5.1 广告自动显示和隐藏

需求描述
  • 页面打开,延迟几秒钟,广告从上向下慢慢滑下显示,停留几秒,再从下向上慢慢滑动隐藏。
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>广告自动显示和隐藏</title>
    <style type="text/css">
        #content {
            width: 100%;
            height: 500px;
            background: #999
        }
    </style>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        /*
        要求:页面加载3秒广告向下滑动,停留5秒后自动向上隐藏
         */
        $(function () {
            //3秒广告向下滑动
            setTimeout(function () {
                //向下滑动耗时2秒
                $("#ad").slideDown(2000, function () {
                    //广告停留5秒
                    setTimeout(function () {
                        //广告往上隐藏,耗时2秒
                        $("#ad").slideUp(2000);
                    }, 5000);
                });
            }, 3000);
        });
    </script>
</head>
<body>
<div>
    <div id="ad" style="display: none;">
        <img style="width: 100%" src="img/adv.jpg"/>
    </div>
    <div id="content">
        这里是正文
    </div>
</div>
</body>
</html>

5.2 抽奖

需求描述
  • 当用户点击开始按钮时,小像框中的像片快速切换。
  • 当用户点击停止按钮时,小像框中的像片停止切换,延时2秒后,大像框中也会显示与小像框相同的像片。
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>抽奖</title>
    <style type="text/css"></style>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
</head>
<body>
<!-- 小像框 -->
<div style="border-style:dotted;width:160px;height:100px">
    <img id="img1ID" src="img/man00.jpg" style="width:160px;height:100px"/>
</div>

<!-- 大像框 -->
<div
        style="border-style:double;width:800px;height:500px;position:absolute;left:500px;top:10px">
    <img id="img2ID" src="img/man00.jpg" width="800px" height="500px"/>
</div>

<!-- 开始按钮 -->
<input
        id="startID"
        type="button"
        value="点击开始"
        style="width:150px;height:150px;font-size:22px"
        onclick="imgStart()">

<!-- 停止按钮 -->
<input
        id="stopID"
        type="button"
        value="点击停止"
        style="width:150px;height:150px;font-size:22px"
        onclick="imgStop()">

<script type="text/javascript">
    //准备一个数组存放图片路径需要循环播放的图片
    var imgs = [
        "img/man00.jpg",
        "img/man01.jpg",
        "img/man02.jpg",
        "img/man03.jpg",
        "img/man04.jpg",
        "img/man05.jpg",
        "img/man06.jpg"
    ];
    /*
    思路:1.点击开始按钮后,开始按钮不能使用,点击停止按钮可以使用
        同时,小相框的图片开始切换,使用计时器改变小相框的src值
        2.点击停止按钮后,停止按钮不能使用,开始按钮可以使用
        同时,小相框停止切换,并将对应的src给到大相框,大相框fadeIn2秒
     */
    function imgStart() {
        //执行小相框切换功能
        imgChange();
        //开始按钮不能使用
        $("#startID").prop("disabled",true);
        //停止按钮可以使用
        $("#stopID").prop("disabled",false);
    }

    //小相框切换
    var index = 0;
    function imgChange() {
        //每100毫秒切换一张图片(执行一次函数),这里用一个全局变量接收这个计时器,用于下面消除时找到这个计时器
        clock = setInterval(function () {
            //根据index的值获取数组中的图片地址
            index = index % imgs.length;//保证index的取值范围是0~6
            //获取当前图片的真实地址,这里用一个全局变量接收,方便下面将当前图片地址传递给大相框
            curImgPath = imgs[index];
            //更改小相框的图片地址
            $("#img1ID").attr("src",curImgPath);
            //索引值加1
            index++;
        },100);
    }

    //添加点击停止按钮方法
    function imgStop() {
        //首先消除定时器
        clearInterval(clock);
        //1.首先隐藏大相框原有的图片
        $("#img2ID").hide();
        //2.根据当前小相框的图片地址更改大相框的图片地址
        $("#img2ID").attr("src",curImgPath);
        //3.大相框图片淡入
        $("#img2ID").fadeIn(2000);

        //开始按钮能使用
        $("#startID").prop("disabled",false);
        //停止按钮不能使用
        $("#stopID").prop("disabled",true);
    }

</script>
</body>
</html>

5.3 信息录入表单校验

需求描述
  • 录入员工信息,有必要的检验信息。
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单校验</title>
    <style type="text/css">
        p{text-align: center;font-size:24px;}
        table{margin: 0 auto;border: 0;}
        table tr{height:40px;border:0;}
        table tr td{padding:0 14px;border:1px solid #999}
        .error{color:red}/*自己写的错误样式*/
    </style>

    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <!--导入表单校验插件-->
    <script src="js/jquery.validate.min.js"></script>
    <!--导入本地化语言消息支持-->
    <script src="js/messages_cn.js"></script>

    <script type="text/javascript">

        /*自定义校验规则
        返回true校验通过,返回false检验不通过*/
        //1.校验长度为15或者18
        $.validator.addMethod("cartlength",function(value,element,params) {
            //校验长度在15和18
            if(value.length==params[0]||value.length==params[1]){
                return true;
            }
            return false;
        });

        //2.校验长度为15的身份证号
        $.validator.addMethod("cart15",function(value,element,params) {
            //校验长度在15和18
            if(value.length==15){
                //使用正则表达式
                var reg = /^\d{15}$/;
                if(reg.test(value)){
                    //校验通过
                    return true;
                } else {
                    //校验不通过
                    return false;
                }
            }
            return true;    //如果不满足长度为15,那么就放行由其他校验器校验
        });

        //3.校验长度为18的身份证号
        $.validator.addMethod("cart18",function(value,element,params) {
            //校验长度在15和18
            if(value.length==18){
                //使用正则表达式
                var reg = /^\d{17}[0-9X]$/;
                if(reg.test(value)){
                    //校验通过
                    return true;
                } else {
                    //校验不通过
                    return false;
                }
            }
            return true;    //如果不满足长度为15,那么就放行由其他校验器校验
        });

        //4.校验中文
        //[\u4e00-\u9fa5]校验含有中文的正则表达式
        //nochinese:true,校验不能含有中文
        $.validator.addMethod("nochinese", function (value, element, params) {
            var reg = /[\u4e00-\u9fa5]/;
            if (reg.test(value)) {
                return false;
            }
            return true;
        });

        /*开启表单校验*/
        $().ready(function () {
            $("#empForm").validate({
                rules: {
                    realname: "required",
                    username: {
                        required: true,
                        rangelength: [5,8]
                    },
                    psw: {
                        required: true,
                        rangelength: [6,12],
                        //不能包含中文,需要自定义校验规则
                        nochinese:true
                    },
                    psw2: {
                        required: true,
                        rangelength: [6,12],
                        equalTo: "#psw"
                    },
                    gender:"required",
                    age:{
                        required: true,
                        range: [26,50]
                    },
                    edu:"required",
                    birthday:{
                        required: true,
                        date:true
                    },
                    checkbox1:"required",
                    email: {
                        required: true,
                        email: true
                    },
                    cart:{
                        required: true,
                        cartlength: [15,18],
                        //自定义校验规则
                        cart15:true,
                        cart18:true
                    }
                },
                messages: {
                    //导入本地化语言支持后,有默认的中文提示。如果不想用,可自行修改
                    //如果是自定义校验规则,没有默认的提示,需要自行增加
                    psw:{
                        nochinese:"密码不能含有中文"
                    },
                    gender:"必须选择一个",
                    checkbox1:"必须选择一个",
                    cart:{
                        cartlength:"请输入15位或者18位的身份证号码",
                        cart15:"你输入的格式不对!",
                        cart18:"你输入的格式不对!"
                    }
                }
            });
        });
    </script>

</head>
<body>
<p>员工信息录入</p>
<form name="empForm" id="empForm" method="post" action="test.html">
    <table border=1>
        <tr>
            <td>真实姓名(不能为空 ,没有其他要求)</td>
            <td><input type="text" id="realname" name="realname" />
            </td>
        </tr>
        <tr>
            <td>登录名(登录名不能为空,长度应该在5-8之间,可以包含中文字符(一个汉字算一个字符)):</td>
            <td><input type="text" id="username" name="username" /></td>
        </tr>
        <tr>
            <td>密码(不能为空,长度6-12字符或数字,不能包含中文字符):</td>
            <td><input type="password" id="psw"  name="psw" /></td>
        </tr>
        <tr>
            <td>重复密码密码(不能为空,长度6-12字符或数字,不能包含中文字符):</td>
            <td><input type="password" id="psw2" name="psw2" /></td>
        </tr>
        <tr>
            <td>性别(必选其一)</td>
            <td>
                <input  type="radio" id="gender_male" value="m" name="gender"/>&nbsp;&nbsp;&nbsp;
                <input  type="radio" id="gender_female" value="f" name="gender"/>&nbsp;<!--插件会自动检测是否有错误消息,有就不会再生成,没有会自动生成-->
                <label for="gender" generated="true" class="error" style="display: none;">必选其一</label>
            </td>
        </tr>
        <tr>
            <td>年龄(必填26-50):</td>
            <td><input type="text" id="age" name="age" /></td>
        </tr>

        <tr>
            <td>你的学历:</td>
            <td> <select name="edu" id="edu">
                <option value="">-请选择你的学历-</option>
                <option value="a">专科</option>
                <option value="b">本科</option>
                <option value="c">研究生</option>
                <option value="e">硕士</option>
                <option value="d">博士</option>
            </select>
            </td>
        </tr>

        <tr>
            <td>出生日期(1982/09/21):</td>
            <td><input type="date" id="birthday"  name="birthday" value="" /></td>
        </tr>

        <tr>
            <td>兴趣爱好:</td>
            <td colspan="2">
                <input type="checkbox" name="checkbox1" id="qq1"/>&nbsp;乒乓球 &nbsp;
                <input type="checkbox" name="checkbox1" id="qq2" value="1" />&nbsp;羽毛球 &nbsp;
                <input type="checkbox" name="checkbox1" id="qq3" value="2" />&nbsp;上网 &nbsp;
                <input type="checkbox" name="checkbox1" id="qq4" value="3" />&nbsp;旅游 &nbsp;
                <input type="checkbox" name="checkbox1" id="qq5" value="4" />&nbsp;购物 &nbsp;
                <label for="checkbox1" generated="true" class="error" style="display: none;">必选字段</label>
            </td>
        </tr>
        <tr>
            <td align="left">电子邮箱:</td>
            <td><input type="text" id="email" name="email" /></td>
        </tr>
        <tr>
            <td align="left">身份证(15-18):</td>
            <td><input type="text" id="cart" name="cart" /></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit"  name="firstname"  id="firstname" value="保存"></td>
        </tr>
    </table>

</form>

</body>
</html>

6. 补充知识点

6.1 JavaScript对象概念
  • js对象相当于一个保存键值对的集合,其中键为属性名,值为属性值。

  • js对象格式:{key1:value1,key2:value,...},其中js对象的属性可以用双引号括住也可以不用括。

  • js对象例子:

    var person = {"name":"JoJo",age:18,useStand:function(){
        alert("白金之星!!");
    }};
    //对象访问自己的成员,格式:js对象.属性
    alert(person.useStand);
    
6.2 静态注册事件与动态注册事件

静态注册事件:只能对页面已加载完成的标签注册事件。在html标签中使用onclick等属性注册事件,eg:<bottom onclick="">;

动态注册事件:对于页面动态生成的标签(页面加载完后追加的标签)注册事件。如使用js对象.on等方式注册事件。

注意:使用off只能解除动态js代码注册的事件,不能解除在html标签上直接静态方法注册的事件

6.3 静态注册事件与动态注册事件的解除绑定方式

静态注册事件:使用removeAttr("属性名")删除静态属性来解除;

动态注册事件:用jquery对象的off函数解除。

6.4 jquery加载完成事件的3种写法
$().ready(function(){});
$(document).ready(function(){});
$(function(){});
6.5 表单校验中校验中文的正则表达式
//[\u4e00-\u9fa5]校验含有中文的正则表达式
//nochinese:true,校验不能含有中文
$.validator.addMethod("nochinese", function (value, element, params) {
    var reg = /[\u4e00-\u9fa5]/;
    if (reg.test(value)) {
        return false;
    }
    return true;
});
6.6 onclick、click()、on()绑定事件的区别
  1. onclick是js独有的事件,本身就是一个事件。而jquery没有onclick这个事件;

  2. click、on是jquery的方法,用于给元素绑定事件

  3. click的作用是触发onclick事件。用click()给元素绑定事件,相当于给元素添加onclick事件,只要执行了元素的click()方法,就会触发对应的onclick事件。onclick和click()只能绑定静态的事件

  4. on()绑定事件到当前选定的jQuery对象中的元素。可以绑定包括click、mouseover等事件。on()可以绑定动态事件,也可以绑定静态事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值