zoukankan      html  css  js  c++  java
  • 什么是 jQuery 和jQuery的基本选择器,层级选择器,基本筛选器

    jQuery是什么? 

    [1]   jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team。

    [2]   jQuery是继prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE!

    [3]  它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器

    [4]  jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。

    [5]  jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。

    jQuery的优势

    一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。

    丰富的DOM选择器,jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。

    链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。

    事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。

    Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。

    跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。

    插件扩展开发。jQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前端页面上的组件都有对应插件,并且用jQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用

    什么是jQuery对象?

    jQuery 对象就是通过jQuery包装DOM对象后产生的对象。jQuery 对象是 jQuery 独有的如果一个对象是 jQuery 对象那么它就可以使用 jQuery 里的方法: $(“#test”).html()

    复制代码
    $("#test").html() 
       
             意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法 
    
             这段代码等同于用DOM实现代码: document.getElementById(" test ").innerHTML; 
    
             虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错
    
             约定:如果获取的是 jQuery 对象, 那么要在变量前面加上$. 
    
    var $variable = jQuery 对象
    var variable = DOM 对象
    
    $variable[0]:jquery对象转为dom对象      $("#msg").html(); $("#msg")[0].innerHTML
    复制代码

     jquery的基础语法:$(selector).action()     

     参考:http://jquery.cuishifeng.cn/

    寻找元素(选择器和筛选器)

    选择器

    基本选择器 

    复制代码
    // 所有元素
    $("*")
    // 根据ID查找
    $("#id")   
    // 根据class名查找
    $(".class")  
    // 根据标签名查找
    $("element")  
    // 组合选择器
    $(".class,p,div")
    复制代码

    层级选择器 

    复制代码
    // 后代选择器
    $(".outer div")  
    // 子代选择器
    $(".outer>div")   
    // 毗邻选择器
    $(".outer+div")  
    // 兄弟选择器(后面的兄弟标签)
    $(".outer~div")
    复制代码

    基本筛选器

    复制代码
    // 第一个
    $("li:first")  
    // 索引为2的
    $("li:eq(2)")  
    // 索引值为偶数的
    $("li:even") 
    // 索引值为奇数的
    $("li:odd") 
    // 索引值大于1的
    $("li:gt(1)")
    // 索引值小于1的
    $("li:lt(1)")
    // 去除所有与给定选择器匹配的元素,id不为d1的li标签
    $("li:not(#d1)")
    // 匹配含有选择器所匹配的元素的元素
    :has(元素名)  

    注意:

    这里的hasnot不是简单的 有和 没有的意思,它俩没啥关系(不是一组)

    :not:has通常用.not().has()代替。

    $("div:has(.c1)")等价于$("div .c1")并不等价于$("div.c1")

    自定义模态框示例

    复制代码
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>Title</title>
        <style>
            .cover{
                position: fixed;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                background-color: rgba(0,0,0,0.3);
                z-index: 999;
            }
            .modal{
                position: fixed;
                top: 50%;
                left: 50%;
                 400px;
                height: 300px;
                margin-top: -150px;
                margin-left: -200px;
                background-color: white;
                z-index: 1000;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <input type="button" id="btn" value="点击">
    <div class="cover hide"></div>
    <div class="modal hide"></div>
    
    <script src="../jquery-3.2.1.min.js"></script>
    <script>
        var btnEle = document.getElementById("btn");
        btnEle.onclick=function () {
    //        $(".cover").removeClass("hide");
    //        $(".modal").removeClass("hide");
            $(".cover,.modal").removeClass("hide");
        }
    </script>
    </body>
    </html>
    复制代码

    属性选择器:

    [attribute]
    [attribute=value]// 属性等于
    [attribute!=value]// 属性不等于

    例子:

    // 示例
    <input type="text">
    <input type="password">
    <input type="checkbox">
    $("input[type='checkbox']");// 取到checkbox类型的input标签
    $("input[type!='text']");// 取到类型不是text的input标签

    表单常用筛选

    复制代码
    :text
    :password
    :file
    :radio
    :checkbox
    
    :submit
    :reset
    :button
    复制代码

    例子:

    $(":checkbox")  // 找到所有的checkbox

    表单对象属性:

    :enabled
    :disabled
    :checked
    :selected

    例子:

    复制代码
    <form>
      <input name="email" disabled="disabled" />
      <input name="id" />
    </form>
    
    $("input:enabled")  // 找到可用的input标签
    
    
    <body>
    
    <form>
        <input type="checkbox" value="123" checked>
        <input type="checkbox" value="456" checked>
    
    
      <select>
          <option value="1">Flowers</option>
          <option value="2" selected="selected">Gardens</option>
          <option value="3" selected="selected">Trees</option>
          <option value="3" selected="selected">Trees</option>
      </select>
    </form>
    
    
    <script src="jquery.min.js"></script>
    <script>
        // console.log($("input:checked").length);     // 2
    
        // console.log($("option:selected").length);   // 只能默认选中一个,所以只能lenth:1
    
        $("input:checked").each(function(){
    
            console.log($(this).val())
        })
    
    </script>
    
    
    </body>
    复制代码

    筛选器

    复制代码
     查找子标签:         $("div").children(".test")      $("div").find(".test")  
                                   
     向下查找兄弟标签:    $(".test").next()               $(".test").nextAll()     
                        $(".test").nextUntil() 
                               
     向上查找兄弟标签:    $("div").prev()                  $("div").prevAll()       
                        $("div").prevUntil()   
     查找所有兄弟标签:    $("div").siblings()  
                  
     查找父标签:         $(".test").parent()              $(".test").parents()     
                        $(".test").parentUntil() 
    复制代码

    until都不包含其中的元素

    补充:

    .first()// 获取匹配的第一个元素
    .last()// 获取匹配的最后一个元素
    .not()// 从匹配元素的集合中删除与指定表达式匹配的元素
    .has()// 保留包含特定后代的元素,去掉那些不含有指定后代的元素。

    左侧菜单示例

    复制代码
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>Title</title>
        <style>
            .left{
                position: fixed;
                left: 0;
                top: 0;
                 20%;
                height: 100%;
                background-color: cornflowerblue;
            }
            .title {
                padding: 10px;
                text-align: center;
                border-bottom: 1px solid whitesmoke;
            }
            .content{
                background-color: black;
                color: white;
            }
            .content div{
                padding: 5px 10px;
                border-bottom: 1px solid whitesmoke;
            }
            .hide{
                display: none;
            }
        </style>
    
    </head>
    <body>
    
    <div class="left">
        <div class="item">
            <div class="title">菜单一</div>
            <div class="content hide">
                <div>111</div>
                <div>222</div>
                <div>333</div>
            </div>
        </div>
        <div class="item">
            <div class="title">菜单二</div>
            <div class="content hide">
                <div>111</div>
                <div>222</div>
                <div>333</div>
            </div>
        </div>
        <div class="item">
            <div class="title">菜单三</div>
            <div class="content hide">
                <div>111</div>
                <div>222</div>
                <div>333</div>
            </div>
        </div>
    </div>
    
    <script src="jquery-3.2.1.min.js"></script>
    <script>
        var $tieleEles = $(".title");
        $tieleEles.on("click",function () {
            // this指当前点击的标签,是DOM对象,需要转换成jQuery对象
            $(this).next().toggleClass("hide").parent().siblings(".item").children(".content").addClass("hide");
        })
    </script>
    </body>
    </html>
    复制代码

    操作标签

    属性操作

    复制代码
    --------------------------CSS类
    $("").addClass(class|fn)
    $("").removeClass([class|fn])
    hasClass();// 判断样式存不存在
    toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加
    
    --------------------------属性
    $("").attr();
    $("").removeAttr();
    $("").prop();
    $("").removeProp();
    
    --------------------------HTML代码/文本/值
    $("").html([val|fn])
    $("").text([val|fn])
    $("").val([val|fn|arr])
    
    ---------------------------
    $("#c1").css({"color":"red","fontSize":"35px"})
    
    ---------------------------
    offset()// 获取匹配元素在当前视口的相对偏移
    position()// 获取匹配元素相对父元素的偏移
    scrollTop()// 获取匹配元素相对滚动条顶部的偏移
    scrollLeft()// 获取匹配元素相对滚动条左侧的偏移
    复制代码

    attr方法使用:

    attr(attrName)// 返回第一个匹配元素的属性值
    attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
    attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
    removeAttr()// 从每一个匹配的元素中删除一个属性
    复制代码
    <input id="chk1" type="checkbox" />是否可见
    <input id="chk2" type="checkbox" checked="checked" />是否可见
    
    
    
    <script>
    
    //对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
    //对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
    //像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此
    //需要使用prop方法去操作才能获得正确的结果。
    
    
    //    $("#chk1").attr("checked")
    //    undefined
    //    $("#chk1").prop("checked")
    //    false
    
    //  ---------手动选中的时候attr()获得到没有意义的undefined-----------
    //    $("#chk1").attr("checked")
    //    undefined
    //    $("#chk1").prop("checked")
    //    true
    
        console.log($("#chk1").prop("checked"));//false
        console.log($("#chk2").prop("checked"));//true
        console.log($("#chk1").attr("checked"));//undefined
        console.log($("#chk2").attr("checked"));//checked
    </script>
    复制代码

    返回顶部示例

    复制代码
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="x-ua-compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>位置相关示例之返回顶部</title>
      <style>
        .c1 {
           100px;
          height: 200px;
          background-color: red;
        }
    
        .c2 {
          height: 50px;
           50px;
    
          position: fixed;
          bottom: 15px;
          right: 15px;
          background-color: #2b669a;
        }
        .hide {
          display: none;
        }
        .c3 {
          height: 100px;
        }
      </style>
    </head>
    <body>
    <button id="b1" class="btn btn-default">点我</button>
    <div class="c1"></div>
    <div class="c3">1</div>
    <div class="c3">2</div>
    <div class="c3">3</div>
    <div class="c3">4</div>
    <div class="c3">5</div>
    <div class="c3">6</div>
    <div class="c3">7</div>
    <div class="c3">8</div>
    <div class="c3">9</div>
    <div class="c3">10</div>
    <div class="c3">11</div>
    <div class="c3">12</div>
    <div class="c3">13</div>
    <div class="c3">14</div>
    <div class="c3">15</div>
    <div class="c3">16</div>
    <div class="c3">17</div>
    <div class="c3">18</div>
    <div class="c3">19</div>
    <div class="c3">20</div>
    <div class="c3">21</div>
    <div class="c3">22</div>
    <div class="c3">23</div>
    <div class="c3">24</div>
    <div class="c3">25</div>
    <div class="c3">26</div>
    <div class="c3">27</div>
    <div class="c3">28</div>
    <div class="c3">29</div>
    <div class="c3">30</div>
    <div class="c3">31</div>
    <div class="c3">32</div>
    <div class="c3">33</div>
    <div class="c3">34</div>
    <div class="c3">35</div>
    <div class="c3">36</div>
    <div class="c3">37</div>
    <div class="c3">38</div>
    <div class="c3">39</div>
    <div class="c3">40</div>
    <div class="c3">41</div>
    <div class="c3">42</div>
    <div class="c3">43</div>
    <div class="c3">44</div>
    <div class="c3">45</div>
    <div class="c3">46</div>
    <div class="c3">47</div>
    <div class="c3">48</div>
    <div class="c3">49</div>
    <div class="c3">50</div>
    <div class="c3">51</div>
    <div class="c3">52</div>
    <div class="c3">53</div>
    <div class="c3">54</div>
    <div class="c3">55</div>
    <div class="c3">56</div>
    <div class="c3">57</div>
    <div class="c3">58</div>
    <div class="c3">59</div>
    <div class="c3">60</div>
    <div class="c3">61</div>
    <div class="c3">62</div>
    <div class="c3">63</div>
    <div class="c3">64</div>
    <div class="c3">65</div>
    <div class="c3">66</div>
    <div class="c3">67</div>
    <div class="c3">68</div>
    <div class="c3">69</div>
    <div class="c3">70</div>
    <div class="c3">71</div>
    <div class="c3">72</div>
    <div class="c3">73</div>
    <div class="c3">74</div>
    <div class="c3">75</div>
    <div class="c3">76</div>
    <div class="c3">77</div>
    <div class="c3">78</div>
    <div class="c3">79</div>
    <div class="c3">80</div>
    <div class="c3">81</div>
    <div class="c3">82</div>
    <div class="c3">83</div>
    <div class="c3">84</div>
    <div class="c3">85</div>
    <div class="c3">86</div>
    <div class="c3">87</div>
    <div class="c3">88</div>
    <div class="c3">89</div>
    <div class="c3">90</div>
    <div class="c3">91</div>
    <div class="c3">92</div>
    <div class="c3">93</div>
    <div class="c3">94</div>
    <div class="c3">95</div>
    <div class="c3">96</div>
    <div class="c3">97</div>
    <div class="c3">98</div>
    <div class="c3">99</div>
    <div class="c3">100</div>
    
    <button id="b2" class="btn btn-default c2 hide">返回顶部</button>
    <script src="jquery-3.2.1.min.js"></script>
    <script>
      $("#b1").on("click", function () {
        $(".c1").offset({left: 200, top:200});
      });
    
    
      $(window).scroll(function () {
        if ($(window).scrollTop() > 100) {
          $("#b2").removeClass("hide");
        }else {
          $("#b2").addClass("hide");
        }
      });
      $("#b2").on("click", function () {
        $(window).scrollTop(0);
      })
    </script>
    </body>
    </html>
    复制代码

    位置操作示例

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .test1{
                 200px;
                height: 200px;
                background-color: wheat;
            }
        </style>
    </head>
    <body>
    
    
    <h1>this is offset</h1>
    <div class="test1"></div>
    <p></p>
    <button>change</button>
    </body>
    <script src="jquery-3.1.1.js"></script>
    <script>
        var $offset=$(".test1").offset();
        var lefts=$offset.left;
        var tops=$offset.top;
    
        $("p").text("Top:"+tops+" Left:"+lefts);
        $("button").click(function(){
    
            $(".test1").offset({left:200,top:400})
        })
    </script>
    </html>
    复制代码
    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
            }
            .box1{
                 200px;
                height: 200px;
                background-color: rebeccapurple;
            }
            .box2{
                 200px;
                height: 200px;
                background-color: darkcyan;
            }
            .parent_box{
                 position: relative;
            }
        </style>
    </head>
    <body>
    
    
    
    
    <div class="box1"></div>
    <div class="parent_box">
        <div class="box2"></div>
    </div>
    <p></p>
    
    
    <script src="jquery-3.1.1.js"></script>
    <script>
        var $position=$(".box2").position();
        var $left=$position.left;
        var $top=$position.top;
    
        $("p").text("TOP:"+$top+"LEFT"+$left)
    </script>
    </body>
    </html>
    复制代码
    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <style>
            body{
                margin: 0;
            }
            .returnTop{
                height: 60px;
                 100px;
                background-color: peru;
                position: fixed;
                right: 0;
                bottom: 0;
                color: white;
                line-height: 60px;
                text-align: center;
            }
            .div1{
                background-color: wheat;
                font-size: 5px;
                overflow: auto;
                 500px;
                height: 200px;
            }
            .div2{
                background-color: darkgrey;
                height: 2400px;
            }
    
    
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
         <div class="div1 div">
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
               <h1>hello</h1>
         </div>
         <div class="div2 div"></div>
         <div class="returnTop hide">返回顶部</div>
    
     <script src="jquery-3.1.1.js"></script>
        <script>
             $(window).scroll(function(){
                 var current=$(window).scrollTop();
                  console.log(current);
                  if (current>100){
    
                      $(".returnTop").removeClass("hide")
                  }
                  else {
                  $(".returnTop").addClass("hide")
              }
             });
    
    
                $(".returnTop").click(function(){
                    $(window).scrollTop(0)
                });
    
    
        </script>
    </body>
    </html>
    复制代码

    尺寸:

    height()
    width()
    innerHeight()
    innerWidth()
    outerHeight()
    outerWidth()

    例子

    复制代码
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>Title</title>
        <style>
            .c1{
                background-color: red;
                height: 200px;
                 400px;
                padding: 10px;
                margin: 20px;
                border: 5px solid black;
            }
        </style>
    </head>
    <body>
    
    <div class="c1">div</div>
    <script src="../jquery-3.2.1.min.js"></script>
    <script>
        $(".c1").height();  // 200 内容
        $(".c1").innerHeight();  // 220 内容+内填充
        $(".c1").outerHeight();  // 230 内容+内填充+边框
    </script>
    </body>
    </html>
    复制代码
    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
            }
            .box1{
                 200px;
                height: 200px;
                background-color: wheat;
                padding: 50px;
                border: 50px solid rebeccapurple;
                margin: 50px;
            }
    
        </style>
    </head>
    <body>
    
    
    
    
    <div class="box1">
        DIVDIDVIDIV
    </div>
    
    
    <p></p>
    
    <script src="jquery-3.1.1.js"></script>
    <script>
        var $height=$(".box1").height();
        var $innerHeight=$(".box1").innerHeight();
        var $outerHeight=$(".box1").outerHeight();
        var $margin=$(".box1").outerHeight(true);
    
        $("p").text($height+"---"+$innerHeight+"-----"+$outerHeight+"-------"+$margin)
    </script>
    </body>
    </html>
    复制代码

    文本操作

    HTML代码:

    html()// 取得第一个匹配元素的html内容
    html(val)// 设置所有匹配元素的html内容

    文本值:

    text()// 取得所有匹配元素的内容
    text(val)// 设置所有匹配元素的内容

    值:

    val()// 取得第一个匹配元素的当前值
    val(val)// 设置所有匹配元素的值
    val([val1, val2])// 设置checkbox、select的值

    示例

    复制代码
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="x-ua-compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>jQuery val示例</title>
    </head>
    <body>
    
    
    <label for="s1">城市</label>
    <select id="s1">
      <option value="beijing">北京市</option>
      <option value="shanghai">上海市</option>
      <option selected value="guangzhou">广州市</option>
      <option value="shenzhen">深圳市</option>
    </select>
    <hr>
    <label for="s2">爱好</label>
    <select id="s2" multiple="multiple">
      <option value="basketball" selected>篮球</option>
      <option value="football">足球</option>
      <option value="doublecolorball" selected>双色球</option>
    </select>
    
    <script src="jquery-3.2.1.min.js"></script>
    <script>
      // 单选下拉框
      $("#s1").val("shanghai");
      // 多选下拉框
       $("#s2").val(["basketball", "football"]);
    </script>
    </body>
    </html>
  • 相关阅读:
    Jenkins-在windows上配置自动化部署(Jenkins+Gitblit)
    GIT-Linux(CentOS7)系统部署GitLab服务器
    VMware 安装Linux系统 CentOS
    GIT-windows系统下Gitblit的使用方式
    SQL 显示所有表所占存储空间
    通过JavaScript更新UpdatePanel备忘
    Entity Framework调用表值函数实现全文检索?
    转载:javascript 拖拽排序,简洁示例备忘
    c++ 读写注册表
    MSSQL中建立分区表(转载备忘)
  • 原文地址:https://www.cnblogs.com/QQ279366/p/8178662.html
Copyright © 2011-2022 走看看