• python-day59--前端 jQuery


    一、什么是jQuery?          http://jquery.cuishifeng.cn/


        类似Python里面的模块

        是js的一个库/插件/工具

    二、JS和jQuery的关系

        - jQuery就是JS写的
        - JS是基础,jQuery是工具

    三、为什么要用jQuery?

    短小、精悍,写起来简单,省事儿,开发效率高,兼容性好

    四、jQuery介绍

        - 版本
            - 1.x    
                兼容IE8及8以前版本
            - 3.x
                兼容最新浏览器
        - .min.xx
            压缩的
            生产环境用
        -  没有压缩的
            开发用

    五、如何使用jQuery?

        - 1. 导入 <script src="jquery-3.2.1.js"></script>      对比python: import re
        - 2. jQuery.xxxxx  --> $('')      $等于jQuery     对比python:  re.xxxx 
       注意:要先导入jQuery ,再导入js ,因为bootstrap里的js内引用了jQuery的方

    六、jQuery知识点:   http://jquery.cuishifeng.cn/

    jQuery知识点:
    
        - HTML:裸体的人
        - CSS :穿上衣服
        - JS  :动起来
            
            给GDP戴上绿帽子
            
            让八级哥和GDP比长短
            
            找到比翔哥还短的人
            
            在全班找不仅短还细的人
            
            
           总结:找到谁, 然后让谁做什么
    
             找到标签,修改标签

     1. 找 -  用jQuery找到目的标签

    - 选择器           语法规则:$("xxx")
            
              基本选择器:
              
                - ID选择器                   $("#id的值")
                - 类选择器(class)          $(".class的值")
                - 标签选择器(html标签)       $("标签的名字")
                - 所有标签                   $("*")
              
                - 组合选择器             $("xx,xxx")
                
                
              层级选择器
              
                - 从一个标签的子子孙孙去找   $("父亲 子子孙孙")
                - 从一个标签的儿子里面找     $("父亲>儿子标签")
                - 找紧挨着的标签             $("标签+下面紧挨着的那个标签")
                - 找后面所有同级的           $("翔哥~女人")

    -jQuery对象:
                - 用jQuery选择器查出来的就是jQuery对象
                - jQuery对象,他就可以使用jQuery方法,不能使用DOM的方法
              
                - DOM对象和jQuery对象转换:
                    - $(".c1")[0] --> DOM对象
                    - $(DOM对象)  --> jQuery对象

    - 常用的筛选器
                - 写在引号里面的
                
                    $(" :first")     第一个
                    $(" :not('')")   非
                    $(" :eq()")     索引等于
                    $(" :gt()")     大于等于索引
                    $(" :last")     最后一个
                    
                    内容

                    $(" :has('')")    有
                    
                    可见性
                    $(" :hidden)     隐藏的
                    
                    属性
            
                    input[type='password']  --> 类型是password的input标签
                    
                    表单
                    :input
                    :text
                    :password
                    :checkbox
                    :radio
                    :submit
                    :button
                    :image
                    :file
                    
                    表单对象属性
                    :enable     可以用的标签
                    :disable    不可以选的标签
                    :checked    选中的标签
                    :selected   下拉框选中的标签
                
                - 写在引号外面当方法用的
                
                  过滤
                    $("").first()
                    $("").last()
                    $("").eq()
                    $("").hasClass()
                    
                  查找
                    .children()
                    .find()
                    .next()
                    .nextAll()
                    .nextUntil()   不包含括号内的标签
                    
                    .parent()
                    .parents()
                    .parentsUntil()    不包含括号内的标签
                    
                    .prev()
                    .prevAll()
                    .prevUntil()
                    
                    .siblings()

      2.属性操作

        一 、属性
                如果你的选择器选出了多个对象,那么默认只会返回第一个的属性
                
                1.    .attr(x)
                        - 一个参数 获取属性的值
                     .attr(x,y)
                        - 两个参数 设置属性的值
                        - 应用练习1  点击加载图片
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>点击加载图片</title>
        <style>
            img{
                height: 600px;
                 800px;
            }
        </style>
    </head>
    <body>
    
    <img src="xxx.png" alt="美女" data-src="Bootstrap_i1.png">
    
    <script src="jquery-3.2.1.js"></script>
    <script>
        $("img").on("click", function () {
            var imgPath = $(this).attr("data-src");
            $(this).attr("src", imgPath)
        })
    
    </script>
    </body>
    </html>
    图片省流量模式
    - 应用场景2  从数据库中取数据时,往往id都是不连续的,那么我们在表格中存数据的时候
                                    就把数据库中的id存到表格下的tr标签中方便到数据库中取数据,并且不与表格中的id冲突,方便以后到数据库中找数据
                                 存:tr.attr("data-id",111)
                                 取:tr.attr("data-id")
    .removeAttr(name)
    - 删除属性 2. .prop(x) 一个值是获取 属性的返回值是布尔类型 .prop(x,y) 两个值是设置 .removeProp(name) - 删除属性 - 例子 全选、反选、取消的例子 - 循环 each - $.each(数组/对象, function(i, v){}) - i 是数组/对象的 索引 - v 是数组/对象的 值 - $("jQuery数组对象").each(function(){})
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>全选反选取消</title>
    
        <link rel="stylesheet" href="bootstrap-3.3.7/css/bootstrap.min.css">
    </head>
    <body>
    
    <div class="container">
        <div class="row">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <button id="all" class="btn-btn-default">全选</button>
                    <button id="cancel" class="btn-btn-default">取消</button>
                    <button id="reverse" class="btn-btn-default">反选</button>
                </div>
                <div class="panel-body">
                    <table class="table table-bordered">
                        <thead>
                        <tr>
                            <th>#</th>
                            <th>First Name</th>
                            <th>Last Name</th>
                            <th>Username</th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr>
                            <th scope="row"><input type="checkbox"></th>
                            <td>Mark</td>
                            <td>Otto</td>
                            <td>@mdo</td>
                        </tr>
                        <tr>
                            <th scope="row"><input type="checkbox"></th>
                            <td>Jacob</td>
                            <td>Thornton</td>
                            <td>@fat</td>
                        </tr>
                        <tr>
                            <th scope="row"><input type="checkbox"></th>
                            <td>Larry</td>
                            <td>the Bird</td>
                            <td>@twitter</td>
                        </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
    <script src="jquery-3.2.1.js"></script>
    <script>
    // 全选
    $("#all").on("click", function () {
        // 统一的操作
    $(":checkbox").prop("checked", true);
    })
    
        //取消
        $("#cancel").on("click", function () {
            $(":checkbox").prop("checked", false);
        })
    
    
    //    // 反选
        $("#reverse").on("click", function () {
            // 取出所有的checkbox
            var checkboxEles = $(":checkbox");
    
    //         要循环checkbox
            // 选中的就取消
            // 没选中的就选中
            checkboxEles.each(function () {
                var thisCheckbox = $(this);  // 在教室里走的那个人
                var isChecked = thisCheckbox.prop("checked");  // 是否选中
    
    //            方法一:判断的方式
                if (isChecked){
                    // 取消选中
                    thisCheckbox.prop("checked", false);
                }else {
                    // 选中
                    thisCheckbox.prop("checked", true);
                }
    
    //            // 方法二:直接取反的方式
    //            thisCheckbox.prop("checked", !isChecked);
    
            })
        })
    
    
    </script>
    
    </body>
    </html>
    View Code
       二、 css类
      addClass()   removeClass()   toggleClass(
    class|fn[,sw]) 切换,有就去掉,没有就加上


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>示例一</title>
        <style>
            .c11 {
                height: 100px;
                 100px;
                border-radius: 50%;
                border: 1px solid #cccccc;
                display: inline-block;
            }
    
            .c12 {
                background-color: yellow;
            }
        </style>
    </head>
    <body>
    
    <div class="c11"></div>
    
    <button id="switch" class="btn btn-default">开关</button>
    <script src="jquery-3.2.1.js"></script>
    <script>
    
    //jQuery绑定事件
        $("#switch").on("click", function () {
            // 找灯泡
            $(".c11").toggleClass("c12");
        })
    
    </script>
    </body>
    
    </html>
    灯泡的例子
    
    

        三、文档处理

         没有参数就是获取对应的值,有参数就是设置对应的值

        html() 获取标签 加 html标签 .html(
    "<span>老师,我好饿。</span>") 注意:添加新标签之后原标签会消失 text() 获取文本 加文本 .text("老师,我好饿。") 注意:标签内的所有文本/标签 都会改变成设置的文本 val() - input - 获取的是输入的内容 - 有参数就是设置对应的值 - checkbox - 获取的是value值 (如果你的选择器选出了多个对象,那么默认只会返回第一个的属性) - 有参数就是设置对应的值 - select - 单选 就是获取值 - 多选 得到的是一个数组,设置的时候也要是数组

     3.  CSS 操作

    CSS
        .css()
            - .css("color")  -> 获取color css值
            - .css("color", "#ff0000") -> 设置值
            - .css({"color": "#cccccc", "border": "1px solid #ff0000"})  -> 设置多个值
            - .css(["color", "border"])  -> 获取多个值
    
    位置
        .offset()
            - 获取相对位置
            - 比较的对象是 html(可视窗口)
        
        .position()
            - 获取相对已经定位的父标签的位置
            - 比较的是最近的那个做过定位的祖先标签

         .scrollTop()
        
            - 例子:页面返回顶部    ,也可以给一个很大的标签(有滚动效果的标签)使用
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            #b1{
                position: fixed;
                right: 15px;
                bottom: 15px;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <div class="c1" GDP="111">戴帽子1</div>
    <div class="c1" GDP="111">戴帽子2</div>
    <div class="c1" GDP="111">戴帽子3</div>
    <div class="c1" GDP="111">戴帽子4</div>
    <div class="c1" GDP="111">戴帽子5</div>
    <div class="c1" GDP="111">戴帽子6</div>
    <div class="c1" GDP="111">戴帽子7</div>
    <div class="c1" GDP="111">戴帽子8</div>
    <div class="c1" GDP="111">戴帽子9</div>
    <div class="c1" GDP="111">戴帽子10</div>
    <div class="c1" GDP="111">戴帽子11</div>
    <div class="c1" GDP="111">戴帽子12</div>
    <div class="c1" GDP="111">戴帽子13</div>
    <div class="c1" GDP="111">戴帽子14</div>
    <div class="c1" GDP="111">戴帽子15</div>
    <div class="c1" GDP="111">戴帽子16</div>
    <div class="c1" GDP="111">戴帽子17</div>
    <div class="c1" GDP="111">戴帽子18</div>
    <div class="c1" GDP="111">戴帽子19</div>
    <div class="c1" GDP="111">戴帽子20</div>
    <div class="c1" GDP="111">戴帽子21</div>
    <div class="c1" GDP="111">戴帽子22</div>
    <div class="c1" GDP="111">戴帽子23</div>
    <div class="c1" GDP="111">戴帽子24</div>
    <div class="c1" GDP="111">戴帽子25</div>
    <div class="c1" GDP="111">戴帽子26</div>
    <div class="c1" GDP="111">戴帽子27</div>
    <div class="c1" GDP="111">戴帽子28</div>
    <div class="c1" GDP="111">戴帽子29</div>
    <div class="c1" GDP="111">戴帽子30</div>
    <div class="c1" GDP="111">戴帽子31</div>
    <div class="c1" GDP="111">戴帽子32</div>
    <div class="c1" GDP="111">戴帽子33</div>
    <div class="c1" GDP="111">戴帽子34</div>
    <div class="c1" GDP="111">戴帽子35</div>
    <div class="c1" GDP="111">戴帽子36</div>
    <div class="c1" GDP="111">戴帽子37</div>
    <div class="c1" GDP="111">戴帽子38</div>
    <div class="c1" GDP="111">戴帽子39</div>
    <div class="c1" GDP="111">戴帽子40</div>
    <div class="c1" GDP="111">戴帽子41</div>
    <div class="c1" GDP="111">戴帽子42</div>
    <div class="c1" GDP="111">戴帽子43</div>
    <div class="c1" GDP="111">戴帽子44</div>
    <div class="c1" GDP="111">戴帽子45</div>
    <div class="c1" GDP="111">戴帽子46</div>
    <div class="c1" GDP="111">戴帽子47</div>
    <div class="c1" GDP="111">戴帽子48</div>
    <div class="c1" GDP="111">戴帽子49</div>
    <div class="c1" GDP="111">戴帽子50</div>
    <div class="c1" GDP="111">戴帽子51</div>
    <div class="c1" GDP="111">戴帽子52</div>
    <div class="c1" GDP="111">戴帽子53</div>
    <div class="c1" GDP="111">戴帽子54</div>
    <div class="c1" GDP="111">戴帽子55</div>
    <div class="c1" GDP="111">戴帽子56</div>
    <div class="c1" GDP="111">戴帽子57</div>
    <div class="c1" GDP="111">戴帽子58</div>
    <div class="c1" GDP="111">戴帽子59</div>
    <div class="c1" GDP="111">戴帽子60</div>
    <div class="c1" GDP="111">戴帽子61</div>
    <div class="c1" GDP="111">戴帽子62</div>
    <div class="c1" GDP="111">戴帽子63</div>
    <div class="c1" GDP="111">戴帽子64</div>
    <div class="c1" GDP="111">戴帽子65</div>
    <div class="c1" GDP="111">戴帽子66</div>
    <div class="c1" GDP="111">戴帽子67</div>
    <div class="c1" GDP="111">戴帽子68</div>
    <div class="c1" GDP="111">戴帽子69</div>
    <div class="c1" GDP="111">戴帽子70</div>
    <div class="c1" GDP="111">戴帽子71</div>
    <div class="c1" GDP="111">戴帽子72</div>
    <div class="c1" GDP="111">戴帽子73</div>
    <div class="c1" GDP="111">戴帽子74</div>
    <div class="c1" GDP="111">戴帽子75</div>
    <div class="c1" GDP="111">戴帽子76</div>
    <div class="c1" GDP="111">戴帽子77</div>
    <div class="c1" GDP="111">戴帽子78</div>
    <div class="c1" GDP="111">戴帽子79</div>
    <div class="c1" GDP="111">戴帽子80</div>
    <div class="c1" GDP="111">戴帽子81</div>
    <div class="c1" GDP="111">戴帽子82</div>
    <div class="c1" GDP="111">戴帽子83</div>
    <div class="c1" GDP="111">戴帽子84</div>
    <div class="c1" GDP="111">戴帽子85</div>
    <div class="c1" GDP="111">戴帽子86</div>
    <div class="c1" GDP="111">戴帽子87</div>
    <div class="c1" GDP="111">戴帽子88</div>
    <div class="c1" GDP="111">戴帽子89</div>
    <div class="c1" GDP="111">戴帽子90</div>
    <div class="c1" GDP="111">戴帽子91</div>
    <div class="c1" GDP="111">戴帽子92</div>
    <div class="c1" GDP="111">戴帽子93</div>
    <div class="c1" GDP="111">戴帽子94</div>
    <div class="c1" GDP="111">戴帽子95</div>
    <div class="c1" GDP="111">戴帽子96</div>
    <div class="c1" GDP="111">戴帽子97</div>
    <div class="c1" GDP="111">戴帽子98</div>
    <div class="c1" GDP="111">戴帽子99</div>
    <div class="c1" GDP="111">戴帽子100</div>
    <button id="b1" class="hide">dianwo</button>
    <script src="jquery-3.2.1.js"></script>
    <script src="bootstrap-3.3.7/js/bootstrap.min.js"></script>
    <script>
        $(window).scroll(function(){
            if ($(window).scrollTop()>100){     //如果屏幕滚动距离大于100
                $('#b1').removeClass('hide');
            }
            else{
                $('#b1').addClass('hide');
            }
            })
        $('#b1').on('click',function(){
                    $(window).scrollTop(0);    //屏幕滚动到 最顶
    
        })
    </script>
    </body>
    </html>
    回到顶部

         .scrollLeft()

     尺寸
         height()
              - 元素的高度
          width()
          innerHeight()
              - 带padding的高度
          innerWidth()
          outerHeight()
              - 在innerHeight的基础上再加border的高度
          outerWidth() 
    
    

     4.文档操作

    内部插入
        append() --> 往后加
        appendTo()
        
        A.append(B)   -> 把B添加到A的后面
        A.appendTo(B) -> 把A添加到B的后面
        
        prepend()  --> 往前加
        prependTo()
        
        A.prepend(B)   -> 把B添加到A的前面
        A.prependTo(B) -> 把A添加到B的前面


    注意:111 是挪动 不是复制 外部插入 after()
    --> 往后加 insertAfter() A.after(B) --> 把B添加到A的后面 A.insertAfter(B) --> 把A添加到B的后面 before() --> 往前加 insertBefore() A.before(B) --> 把B添加到A的前面 A.insertBefore(B) --> 把A添加到B的前面

    包裹
        wrap()
            A.wrap(B)  --> B包A
        unwrap()
            - 不要加参数
            
        wrapAll()
        wrapInner()
    注意:

        wrapAll()
        wrapInner()
    
    
    
    
     替换
        replaceWith()
            A.replaceWith(B)  --> B替换A

            
        replaceAll()
            A.replaceAll(B)   --> A替换B





     删除
         empty()
             - 清空 内部清空
         remove([expr])
             - 删除 整体都删除
         detach([expr])
             - 剪切  多保存在变量中,方便再次使用


            
        复制
        clone([Even[,deepEven]])

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>克隆</title>
    </head>
    <body>
    <button class="c1">一刀999</button>
    
    <script src="jquery-3.2.1.js"></script>
    <script>
        $(".c1").on("click", function () {
            $(this).clone(true).insertAfter($(this));   //.clone(true) 表示把标签的绑定的事件也克隆了
        })
    </script>
    </body>
    </html>
    clone练习

    5.事件

     1 事件处理

    之前绑定事件的方式:
    1. onclick=clickMe(); function clickMe() {} 2. ele.onclick = function(){} 3. ele.addEventListener("click", function(){}) jQuery绑定事件的方式: 1. $(ele).on("click", function(){}) 2. $("tbody").delegate(".btn-warning", "click", function(){}) 在$("tbody")内所有带有btn-warning类的标签,点击时就会执行函数内内容 3. $("tbody").on("click",".btn-warning",function(){}) 我们要用的事件委派


     2 常用事件
          blur() - 失去焦点
        
          focus()
              - 获取焦点
              - 搜索框例子
            
          change()
              - select
            
          click()
              - 点击
        
          dblclick()
              - 双击
    
          scroll()
              - 滚动
    
          submit()
              -提交
            
            
          补充:
              文档树加载完之后绑定事件(绝大部分情况下)
              $(document).ready(function(){
                  // 绑定事件的代码
                  ....
              })
            
              简写:
              $(function($){
                  // 绑定事件的代码
                  ....
              });
    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>常用事件示例</title>
    </head>
    <body>
    
    <input type="text" name="search" value="苹果手机" data-show="">
    <button>搜索</button>
    
    <select name="" id="s1">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select>
    
    <script src="jquery-3.2.1.js"></script>
    <script>
        $(":input").focus(function () {
            var data = $(this).val();
            $(this).val("");
            $(this).attr("data-show", data);
        });
        
        $(":input").blur(function () {
            $(this).val($(this).attr("data-show"));
        });
    
        // change 通常用与select标签
        $("#s1").change(function () {
            console.log($(this).val());
        });
    </script>
    </body>
    </html>
    常用事件练习

    6.效果(动画)

    基本
        show()
        hide()
        toggle()
        
    滑动
        slideDown()
        slideUp()
        slideToggle()
        
    淡入淡出
        fadeIn()
        fadeOut()
        
        fadeTo()
            - 淡出到0.66透明度
        fadeToggle()
            - .fadeToggle(3000, function () {
                alert("真没用3");
            });
            
    自定义
    animate(p,[s],[e],[fn])
        - css属性值都可以设置
        - 女朋友变小(漏气)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>动画示例</title>
    
        <style>
            .hide {
                display: none;
            }
        </style>
    </head>
    <body>
    <img src="http://www.iyi8.com/uploadfile/2017/0523/20170523114637271.jpg" alt="">
    
    <button id="b1">召唤</button>
    <button id="b2">淡出</button>
    <button id="b3">淡入</button>
    <button id="b4">淡出到0.66</button>
    <button id="b5">淡入淡出</button>
    <button id="b6">边框变大</button>
    <script src="jquery-3.2.1.js"></script>
    <script>
        $("#b1").on("click", function () {
    //        $("img").show();
            $("img").toggle();
    
        })
        // 淡出
        $("#b2").on("click", function () {
            $("img").fadeOut("fast");
        })
        // 淡入
      $("#b3").on("click", function () {
          // 掌握了增加时间的方法
            $("img").fadeIn(3000, function () {
                alert("真没用");
            });
        })
        // 淡出到0.66透明度
      $("#b4").on("click", function () {
          // 掌握了新知识
            $("img").fadeTo(3000, 0.66, function () {
                alert("真没用2");
            });
        })
        // 淡入淡出
      $("#b5").on("click", function () {
            $("img").fadeToggle(3000, function () {
                alert("真没用3");
            });
        })
        // 动画-图片变小
      $("#b6").on("click", function () {
            $("img").animate({
                 "100px",
                height: "60px"
            }, 3000, function () {
                // 这是回调函数
                alert(123);
            });
        })
    </script>
    </body>
    </html>
    动画练习

     7. jQuery扩展

        1.    $.extend({
                "GDP": function () {
                    console.log("戴小红花");
                }
            });
            
            - 给jQuery添加扩展
            - $.GDP()
            
        
        2.    $.fn.extend({
                "BJG": function () {
                    console.log("英语八级就是好!");
                }
            })
            
            - 给jQuery对象添加扩展
            - $(":input").BJG()
    /**
     * Created by Administrator on 2017/10/17.
     */
    //写在js文件内,从而在html中直接调用就可以了
    
    (function (jq) {                   //匿名函数    
       jq.extend({
            "GDP": function () {
                func1();
                console.log("戴小红花");
            },                              //扩展多个方法时,用 逗号 隔开
           "SGS": function () {
               console.log("三国杀真好玩,我都不听课");
           }
        });
    
        function func1() {             //在内部定义函数 是为了把函数变成私有的方法,在外部不能调用
            console.log("这是func1");
        }
    })(jQuery);       //把jQuery 当作参数传进去 是为了避免 $被 赋值给其他的值
    View Code
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录校验</title>
        <link rel="stylesheet" href="bootstrap-3.3.7/css/bootstrap.min.css">
        <style>
            .c1 {
                margin-top: 100px;
            }
        </style>
    </head>
    <body>
    <div class="container">
        <div class="row">
            <div class="col-md-4 c1 col-md-offset-4">
                <form class="form-horizontal" id="login">
                    <div class="form-group">
                        <label for="username" class="col-sm-2 control-label">Email</label>
                        <div class="col-sm-10">
                            <input type="text" class="form-control" id="username" placeholder="username" aria-describedby="helpBlock1" required="true">
                            <span id="helpBlock1" class="help-block"></span>
                        </div>
    
                    </div>
                    <div class="form-group">
                        <label for="inputPassword3" class="col-sm-2 control-label">密码</label>
                        <div class="col-sm-10">
                            <input type="password" class="form-control" id="inputPassword3" placeholder="Password" aria-describedby="helpBlock2">
                            <span id="helpBlock2" class="help-block"></span>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-offset-2 col-sm-10">
                            <div class="checkbox">
                                <label>
                                    <input type="checkbox"> Remember me
                                </label>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-offset-2 col-sm-10">
                            <button type="submit" class="btn btn-default">Sign in</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    <script src="jquery-3.2.1.js"></script>
    <script src="bootstrap-3.3.7/js/bootstrap.min.js"></script>
    <!--<script src="myValidate.js"></script>    myValidate.js 的引用-->
    <script src="myValidate2.js"></script>          <!--myValidate2.js 的引用-->
    <script>
        $(document).ready(function () {
            // 给jQuery扩展
            //$.myValidate("#login")              myValidate.js  的调用
    
            // 给jQuery对象扩展
            // $.fn.extend()
            $("#login").myValidate({"username": {"min-length": 6}});   // myValidate2.js的 调用
        })                                       //{"username": {"min-length": 6}}  是动态的校验规则
    </script>
    </body>
    </html>
    自定义插件练习html代码
    /**
     * Created by Administrator on 2017/10/17.
     */
    
    (function (jq) {
        jq.extend({
            "myValidate": function (form) {
                var formObj = jq(form);
    
                formObj.find(":submit").on("click", function () {
                    // 先清空状态
                    formObj.find(".form-group").removeClass("has-error");
                    formObj.find("span").text("");
    
                    // each循环
                    formObj.find("input").each(function () {
                        // 做判断
                        if (jq(this).val().length === 0) {
                            // 给他的爸爸加has-error
                            jq(this).parent().parent().addClass("has-error");
                            // 给span写内容
                            // 找到我这是什么input  --> 找到对应的label的文本内容
                            var name = jq(this).parent().prev().text();
                            jq(this).next().text(name + "不能为空");
                            return false;
                        }
                    });
                    return false;
                });
            }
        })
    
    })(jQuery);
    自定义插件练习1 js代码
    /**
     * Created by Administrator on 2017/10/17.
     */
    
    (function (jq) {
        jq.fn.extend({
            "myValidate": function (arg) {
                // this --> .前面的那个jQuery对象
                var formObj = this;
                formObj.find(":submit").on("click", function () {
                    // this --> 提交的submit按钮
                    // 先清空状态
                    formObj.find(".form-group").removeClass("has-error");
                    formObj.find("span").text("");
                    // each循环
                    var flag = true;
                    formObj.find("input[required='true']").each(function () {
                        // this --> input框
                        // 做判断
                        if (jq(this).val().length === 0) {
                            // 给他的爸爸加has-error
                            jq(this).parent().parent().addClass("has-error");
                            // 给span写内容
                            // 找到我这是什么input  --> 找到对应的label的文本内容
                            var name = jq(this).parent().prev().text();
                            jq(this).next().text(name + "不能为空");
                            flag = false;
                            return flag;
                        }
    
                        var inputID = jq(this).attr("id");
                        var minLength = arg[inputID]["min-length"];
                        if (minLength !== undefined) {
                            if (jq(this).val().length < minLength) {
                                console.log("长度太短");
                                 // 给他的爸爸加has-error
                            jq(this).parent().parent().addClass("has-error");
                            // 给span写内容
                            // 找到我这是什么input  --> 找到对应的label的文本内容
                            var name = jq(this).parent().prev().text();
                            jq(this).next().text(name + "长度太短");
                                flag = false;
                                return flag;
                            }
                        }
                    });
                    return flag;
                })
            }
        })
    })(jQuery);
    自定义插件练习2 js代码
  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/liuwei0824/p/7656313.html
Copyright © 2020-2023  润新知