zoukankan      html  css  js  c++  java
  • jQuery

    jQuery

    jQuery概念

    • jQuery就是JavaScript和查询(Query),通过js代码实现对页面的快速查询。

    • 它的核心思想是write less,do more(写的更少,做的更多)

    • jQuery是一款优秀的,快速的,简洁Javascript框架(代码库)。

    • 在它内部封装了JavaScript功能代码,使用来优化HTML文档处理,事件处理,和Ajax交互。

    • JavaScript矿建:本质上就是一些js文件。在它内部封装了js的原生代码而已。

      // 封装一下根据id获取页面元素的方式
      function $(selector) {
          if (selector.startsWith("#")) {
              var ele = document.getElementById(selector.substring(1));
              return ele;
          } else if (selector.startsWith(".")){
              var elementsByClassName = document.getElementsByClassName(selector.substring(1));
              return elementsByClassName;
          } else {
              var elementsByTagName = document.getElementsByTagName(selector);
              return elementsByTagName;
          }
      }
      
          <script src = "./js/zhiyou.js"></script>
          <script>
              window.onload = function () {
                  // 获取页面中的input标签元素  id  ClassName name  TagName
                  // 通过id的方式来获取的
                  var input01 = $("#lq");
                  var input02 = $("#zq");
                  alert(input01.value);
                  alert(input02.value);
                  var inputs = $(".inp01");
                  alert(inputs[0].value);
                  alert(inputs[1].value);
                  // 通过标签选择器来获取页面中的元素
                  var elementsByTagName = $("input");
                  alert(elementsByTagName);
              }
          </script>
      </head>
      <body>
          <input type="text" value="篮球" id="lq" />
          <input type="text" value="足球" id="zq" />
          <input type="text" value="乒乓球" class="inp01"/>
          <input type="text" value="排球" class="inp01" />
      </body>
      

    快速入门

    • 步骤
      1. 下载一个jp插件
      2. 版本介绍:目前市面上有三种版本,优先使用1.xxx
      3. 压缩版本(jquery.min.js<生产版本,体积较小,加载快>),和为压缩版本(jquery.js<开发版本>)
      4. 在项目中引入jquery插件,引入到web目录下,在web目录下新建一个js文件,粘贴进去。
      5. 在页面中通过 <script src = "jQuery路径"></script>

    两种对象获取方式

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript" src="WEB-INF/js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
            onload = function (ev) {
                //dom对象获取方式
                var elementById1 = document.getElementById("lq");
                var elementById = document.getElementById("zq");
                //alert(elementById)//[object HTMLInputElement]
                //alert(elementById1)//[object HTMLInputElement]
                //使用jQuery对象获取方式 选择器 --》参考css中的选择器语法
                var $lq = $("#lq");
                var $zq = $("#zq");
                //alert($lq)//[object Object]
                //alert($zq)//[object Object]
    
                var inputs = document.getElementsByClassName("inp01");
                //alert(inputs.length)//2
                //alert(inputs.size)//undefined
                var $input01 = $(".inp01");
                //alert($input01.length)//2
                //alert($input01.size())//2
    
                //原生js方式 --》获取inputs对象数组 value
                /*for (var i = 0; i < inputs.length; i++) {
                    alert(inputs[i].value)
                }*/
                //jquery 方式 获取input输入框中的值
                //alert($input01.val()) // 两个input输入框(只输出了一个)
                /*for (var i = 0; i <$input01.length ; i++) {
                    //$input01[i]  -->把jQuery对象转换成dom对象
                    alert( $input01[i].value)
                }*/
    
                //两个对象相互转换
                //1. jq  -》dom :jQuery对象[索引] / jQuery对象.get(索引)
                var $input = $("input");
                /*for (var i = 0; i <$input.size() ; i++) {
                    //$input[i].value="棒球" //第一种
                    $input.get(i).value="羽毛球" //第二种
                }*/
                //2. dom ->jq对象  $(dom对象)
                var tagName = document.getElementsByTagName("input");
                $(tagName).val("铅球")
                //jQuery对象在调用方法时,如果是修改的话,先内部遍历到每一个jQuery对象,然后再次执行该方法
    
                //html()
                //$("div").html("我是一个div标签")
            }
        </script>
    </head>
    <body>
    <div>div1</div>
    <div>div1</div>
    <div>div1</div>
    <input type="text" value="篮球" id="lq">
    <input type="text" value="足球" id="zq">
    <input type="text" value="乒乓求" id="ppq" class="inp01">
    <input type="text" value="排球" id="pq" class="inp01">
    </body>
    

    jQuery对象和js原生对象的区别与转换

    • 获取方式:
      • jQuery对象:通过$("选择器")方式来获取页面元素
      • js原生dom对象:通过window.document.getElementByXxxx() 方式来获取的
    • jQuery和js原生的dom对象的方法不通用。不能互调。
    • 两者之间可以相互转换
      • jq -》dom :jQuery对象[索引] / jQuery对象.get(索引)
      • dom 《-jq :$()
      • 备注:js只能通过四种方式来获取页面中的元素document.getElementByXxx(),相对于js原生方式来说,jQuery获取页面元素更加灵活,可以借助于css选择器来实现。

    js遍历注意事项

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--    <script type="text/javascript" src="WEB-INF/js/jquery-1.12.4.min.js"></script>-->
        <script type="text/javascript">
            onload = function (ev) {
                //获取input所有标签
                var tagName = document.getElementsByTagName("input");
                //遍历
                // of  --> 获取的是对象数组中的每一个对象也就是vlaue值["xm","xh","xs","xl"]
                for (let tn of tagName) {
                    tagName.value = "棒球";
                }
                //in --> 获取的是对象数组中的每一个对象对应的索引值["xm","xh","xs","xl"]-》0 1 2 3
                for (var tn in tagName) {
                    tagName[tn].value = "羽毛球";
                }
                /*
                * for in -》es5 遍历key值 索引
                * 只能用于数组的遍历
                * for of -》es6 遍历value值 对象
                * 不但可以用于数组的遍历,还可以用于对象中的属性集
                * */
                /*
                * document.write() 方法可以用于向页面插入一些内容,浏览器会按照html元素的顺序依此解析出来。并展示
                * 注意:当文档一旦加载完毕。document.write()会覆盖以往的页面内容
                * 也就是浏览器会重写document对象内容
                * */
            }
        </script>
    </head>
    <body>
    <div>div1</div>
    <div>div1</div>
    <div>div1</div>
    <input type="text" value="篮球" id="lq">
    <input type="text" value="足球" id="zq">
    <input type="text" value="乒乓求" id="ppq" class="inp01">
    <input type="text" value="排球" id="pq" class="inp01">
    <script type="text/javascript">
        document.write("<hr>") //此时不会覆盖
        window.onload = function (ev) {
            document.write("<hr>")//此时会覆盖
        }
    </script>
    </body>
    

    事件绑定

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript" src="WEB-INF/js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
            onload = function () {
                /*//给第一个input标签绑定 点击事件
                var inputLQ = document.getElementById("lq");
                inputLQ.onclick = function () {
                    alert("我被点到了")
                }
    
                $("#zq").click(function () {
                    alert("我被点到了")
                })
                $("#ppq").dblclick(function () {
                    alert("我被双击点到了")
                })
                //时间注册
                $("#pq").on("click", function () {
                    alert("我被点到了")
                })*/
    
                $("#zq").on("focus",function () {
                    //$("#zq").val("排球")
                    //this指代的是当前操作的dom对象
                    this.value=("羽毛球");
                })
                $("#zq").on("blur",function () {
                    this.value="棒球";
                })
            }
        </script>
    </head>
    <body>
    <div>div1</div>
    <div>div1</div>
    <div>div1</div>
    <input type="text" value="篮球" id="lq">
    <input type="text" value="足球" id="zq">
    <input type="text" value="乒乓求" id="ppq" class="inp01">
    <input type="text" value="排球" id="pq" class="inp01">
    </body>
    

    选择器

    • 作用:筛选具有相似特征的元素标签。

    • 基本操作:

      • 事件绑定

        事件源(标签)+事件名称(具体事件)+监听器(实现的代码)

      • 页面加载

        • 当页面加载的时候需要给事件源绑定事件,以及做相关的事情业务。如果我们用原生js方式:window.onload=function() {};,如果我们使用jQuery方式实现页面加载方式:$(document).ready(function(){ });
        • 在实际开发中,我们一般用它的简化版,格式:$(function(){})
        • 对比原生js方式区别:window.onload=function=(){};如果原生js如果书写多个,那么会出现覆盖效果(后一个把前一个覆盖了)。但是对于jQuery来说,可以书写多个页面载入函数--》入口函数
        • jQuery和原生js在进行载入的时候有先后顺序。jQuery加载时机优先于原生js方式。
      • 样式控制:css()方法 --》style

        • 单个样式

          语法格式:$("选择器").css("属性名"."属性值");

        • 多个样式

          语法格式:$("选择器").css({"属性名":"属性值","属性名":"属性值"...});

        <head>
            <meta charset="UTF-8">
            <title>Title</title>
            <script type="text/javascript" src="WEB-INF/js/jquery-1.12.4.min.js"></script>
            <script type="text/javascript">
                $(function () {
                    //给第一个div标签设置背景
                    document.getElementsByTagName("div")[0].style.backgroundColor="red"
                    $("#div02").css("background-Color","blue")
                    var css = $("#div03").css("background-Color");
                    //alert(css)//rgb(255, 192, 203)
                    //给第二个div设置多个样式
                    $("#div02").css({"backgroundColor":"grey","height":"500px","width":"500px",
                    "font-size":"30px","font-wight":"bolder"})
                })
            </script>
        </head>
        <body>
        <div>div1</div>
        <div id="div02">div1</div>
        <div id="div03" style="background-color: pink">div1</div>
        <input type="text" value="篮球" id="lq">
        <input type="text" value="足球" id="zq">
        <input type="text" value="乒乓求" id="ppq" class="inp01">
        <input type="text" value="排球" id="pq" class="inp01">
        </body>
        

    分类

    基本选择器:

    1. id选择器,格式:$("#id值") 获取的是单个标签元素
    2. class选择器,格式:$(".class值") 获取的是指定的class属性值对应的标签元素
    3. 标签选择器,格式:$("标签名") 获取的页面所有匹配的标签元素
    4. 并集选择器,格式:$("选择器1","选择器2",...) 获取的是匹配选择器中对应的标签元素
    5. 交际选择器,格式:$("选择器1""选择器2"...)获取的是满足同时满足多个选择器对应的标签元素

    层级选择器:

    1. 后代选择器,格式:$("选择器1" "选择器2") (注意有空格)选择选择器1内部的所有选择器对应的标签元素。
    2. 子选择器,格式:$("选择器1">"选择器2") 获取选择器1内部所有选择器2对应的直接子标签。

    属性选择器:表单标签使用较多

    1. 属性选择器:表单标签中使用较多

      $("标签名[属性=属性值]") 获取的是就是u指定的属性名=属性值对应的标签元素

    2. 符合属性选择器:

      $("标签名[属性名1=属性值][属性名2=属性值]...") 获取同时满足多个属性名=属性值对应的标签元素。

    过滤选择器

    • 偶数选择器

      :even 从零开始计数 索引 $("div:even") 索引02468..-->对应的标签顺序1357..

    • 奇数选择器

      :odd 从零开始计数 索引 $("div:odd") 索引1357..-->标签顺序2468..

    • 大于索引选择器

      gt:(索引值)

    • 小于索引选择器

      lt:(索引值)

    • 等于索引选择器

      eq:(索引值)

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript" src="WEB-INF/js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
            //入口函数
            $(function () {
                //奇数行的颜色为绿色 索引依然是从零开始计算 1357  标签顺序2468
                //tr --》获取的是所有的jQuery对象
                //列标题过滤掉 索引是从0开始计数的
                $("tr:gt(0):odd").css("background-color", "green");
                //偶数行的颜色为粉色
                $("tr:gt(0):even").css("background-color", "pink");
            })
    
        </script>
    </head>
    <body>
    <table border="1" align="center" width="500px">
        <tr>
            <th>序号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>职业</th>
        </tr>
        <tr>
            <td>1.1</td>
            <td>1.2</td>
            <td>1.3</td>
            <td>1.4</td>
        </tr>
        <tr>
            <td>2.1</td>
            <td>2.2</td>
            <td>2.3</td>
            <td>2.4</td>
        </tr>
        <tr>
            <td>3.1</td>
            <td>3.2</td>
            <td>3.3</td>
            <td>3.4</td>
        </tr>
    </table>
    

    表单过滤选择器

    • 可用元素选择器

      :enable 获取可用元素

    • 不可用元素选择器

      :disabled 获取不可用元素

    • 选中元素选择器

      • 下拉列表中

        :selected 获取到的下拉列表中的选中的元素

      • 互斥

        :checked 获取到的是互斥单选框或者复选框选中的元素

    DOM操作

    内容操作

    • html() -->innerHTML 获取元素的内容,设置元素的内容 内容=文本内容/子标签

    • text() -->innerText 只能获取到标签的纯文本信息

    • val() -->value 获取标签的value属性值

      <head>
          <meta charset="UTF-8">
          <title>Title</title>
          <script type="text/javascript" src="WEB-INF/js/jquery-1.12.4.min.js"></script>
          <script type="text/javascript">
              $(function () {
                  var html = $("div").html();
                  //alert(html)//<a></a>
                  //$("div").html("<h3>我是一个大标题</h3>")
      
                  var text = $("div").text();
                  //alert(text)//超链接 (纯文本内容超链接拿取不到)
      
                  var val = $("option").val();
      
              })
          </script>
      </head>
      <body>
      <div>
          <select>
              <option value="中国"></option>
              <option value="美国"></option>
          </select>
          <a href="#">超链接</a>
      </div>
      </body>
      

    属性操作

    属性

    • attr() 获取指定的属性

    • removeAttr() 删除属性

    • prop() 获取与设置属性值

    • removeprop 删除属性值

    • attr和prop区别

      如果操作的是标签本身的属性建议使用prop()

      如果操作的是自定义的属性建议attr()

      <head>
          <meta charset="UTF-8">
          <title>Title</title>
          <script type="text/javascript" src="./WEB-INF/js/jquery-1.12.4.min.js"></script>
          <script type="text/javascript">
              $(function () {
                  //attr
                  $("img").attr("src","032.jpg")
                  //var attr = $("img").attr("src");
                  //alert(attr)
                  //$("img").attr("name","励志语句")
                  //removeAttr
                  //$("img").removeAttr("name")//通过key值删除
                  //prop
                  //$("img").prop("src","032.jpg")
                  //removeProp
                  //$("img").removeProp("alt")
              })
          </script>
      </head>
      <body>
      <img src="" alt=""/>
      </body>
      

    css类

    • addClass() 添加class属性值

    • removeClass 删除class属性值

    • toggleClass 切换class属性值,有删除掉,没有就添加上去

      <head>
          <style>
              .div01 {
                  height: 500px;
                   500px;
                  background-color: pink;
                  border: 1px dotted hotpink;
              }
              .div02 {
                  height: 200px;
                   300px;
                  background-color: purple;
                  border: 1px dashed darkgreen;
              }
          </style>
          <meta charset="UTF-8">
          <title>Title</title>
          <script type="text/javascript" src="./WEB-INF/js/jquery-1.12.4.min.js"></script>
          <script type="text/javascript">
              $(function () {
                  //$("div").addClass("div01")
                  $("#it1").on("click",function () {
                      $("div").addClass("div01")
                      $("div").removeClass("div02")
                  })
                  $("#it2").on("click",function () {
                      $("div").addClass("div02")
                      $("div").removeClass("div01")
                  })
      
                  //toggleClass() 有就删除class属性值 没有就添加
                  /*$("#it1").on("click",function () {
                      $("div").toggleClass("div01");//开关技术
                  })*/
              })
          </script>
      </head>
      <body>
      <div></div>
      <input id="it1" type="button" value="切换第一种风格">
      <input  id="it2" type="button" value="切换第二种风格">
      </body>
      

    节点操作 CRUD操作

    1. 添加节点

      • append() :通过父元素将子元素添加到父元素的末尾

        格式:父元素对象(jQuery).append(子元素对") :将子元素对象添加到父元素对象的内部,位置在末尾

      • prepend() :通过父元素将子元素添加到父元素的头部

        格式:父元素对象(jQuery).prepend(子元素对象) :将子元素对象添加到父元素对象的内部,位置在头部

      • appendTo() :通过子元素将自己添加父元素内部,并且位置在末尾

        格式:子元素对象.appendTo(父元素对象) :将自己添加父元素内部,并且位置在末尾

      • prependTo() 通过子元素将自己添加父元素内部,并且位置在头部

        格式:子元素对象.prependTo(父元素对象) :将自己添加父元素内部,并且位置在头部

        <head>
            <meta charset="UTF-8">
            <title>Title</title>
            <script type="text/javascript" src="./WEB-INF/js/jquery-1.12.4.min.js"></script>
            <script type="text/javascript">
                $(function () {
                    $("#btn").on("click",function () {
                        var $One = $("#One");//ul对象
                        var $atp = $("#atp");//li对象
                        $One.append($atp)
                    })
                    $("#btn2").on("click",function () {
                        var $One = $("#One");//ul对象
                        var $atp = $("#bigData");//li对象
                        $One.prepend($atp)
                    })
                })
            </script>
        </head>
        <body>
        专业:
        <ul id="One">
            <li>计算机科学应用</li>
            <li>捂脸往</li>
            <li>软件工厂</li>
            <li>通信工程</li>
        </ul>
        相关专业
        <ul id="Two">
            <li id="atp">人工智能</li>
            <li>ai技术</li>
            <li id="bigData">大数据</li>
        </ul>
        <input type="button" id="btn" value="添加">
        <input type="button" id="btn2" value="添加">
        </body>
        
      • after() :添加元素到指定元素的后面

        格式:对象1.after(对象2) --》 将对象2放到对象1后面,对象1和对象2是同级关系-->兄弟关系

        <div>
            <div>
                
            </div>
        </div>
        <div>
        </div>
        
      • before() :添加元素到指定元素的前面

        格式:对象1.before(对象2) --》将对象2添加到对象1道德前面,对象1和对象2是同级关系-->兄弟关系

    2. 删除节点

      • remove() 删除元素

        格式:对象.remove() :将此对象删除掉(把自己删除掉)

      • empty() 清空元素的所有后代元素

        格式:对象.empty() :将此对象的所有后代删掉,清空,但是保留当前自己对象以及属性节点。

    3. 修改节点

    4. 查询节点

    This用法

    • 如果在调用方法时需要获取标签元素本身,在方法上设定参数为this,此时this表示当前标签。
    • 对于标签如果添加onclick或者onmouse方法的时候,如果方法在<script>标签中直接定义的,那么在方法中获取的this指代的是当前窗口对象window,并不会指代当前标签本身。所以需要获取标签本身的话,直接在方法定义的时候直接使用this作为参数传递
    • 如果js中获取到了某个标签,然后给其绑定某个事件对应的方式,此方法中的this指代的是这个对象的本身。

    Serialize方法

    • 概念:序列化,此时在jQuery中针对的是表单提交。

      通过这个方法一次性获取到表单中所有值,生成一个字符串,格式:username=zhangsan&password=123445&age=18...

  • 相关阅读:
    view和activity的区别
    接口对象的实例化在接口回调中的使用
    GreenDao
    HAOI 2012 高速公路
    SDOI2010 地精部落
    hdu 1505 City Game
    uva 1506 Largest Rectangle in a Histogram
    2017 济南综合班 Day 2
    uva 12325 Zombie's Treasure Chest
    uva 11212 Editing a Book
  • 原文地址:https://www.cnblogs.com/zk2020/p/14296254.html
Copyright © 2011-2022 走看看