• 前端基础------jquer y学习


    一. jquery是什么

      快速,简洁,轻量级的JavaScript库(JavaScript框架)使用户可以快速的操作HTML document,实现动画效果,并方便的地为网站提供AJAX交互.文档全面,详细,还可以使用各种插件.
    简单的说就是封装了javascript的功能,更为方便用户使用JavaScript.

    二. jquery对象

      jquery对象就是jquery把DOM对象包装后产生的对象,jquery对象就可以使用jquer的方法了.

    $('#test').html()   ------>$('')这是jquery语法, 用来封装DOM对象的, #test是选择器,.html()这是jquery里面的方法

                  这个语句的意思就是,选择id为test的DOM对象,用jquery封装成jquery对象之后,调用jquery里面的html()方法
                   这段代码等同于用DOM实现代码: document.getElementById(" test ").innerHTML; 
                  
                  虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错
       
                  约定:如果获取的是 jQuery 对象, 那么要在变量前面加上$.

                  

      var variable=DOM对象

     var  $variable=jquery对象

      关于jquery对象和DOM对象的相互转换

    1. jquery对象--->DOM对象       $('c3')[0].innertml  //把jquery对象转换成DOM对象 

    2. DOM对象------>jquery对象 $('#i5').html //把id为i5的DOM对象转换成jquery对象并转调用jquery的html()方法

      注意:不管jquery是通过什么选择器选择的,他一定是一个集合,即使他是通过id选择的,也是一个集合,只不过是这个集合只有一个元素.

      jquery基本语法:$('selector').action()

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

      1.  选择器的种类(其实就是css的选择器)

    1. 基本选择器
      $('*') $('#id') $('.class') $('element') $('.class,p,div') //通用,id,类,对象,组合

    2. 层级选择器
      $('.outer div') $('.outer>div') $('.outer+div') $('.outer~div') //后代,儿子,毗邻,弟弟

    3. 属性选择器
      $('[mmm]') $('[mmm="baijia"]') $('[mmm="baijia"][wocal]') //具有某些自定义属性的,只要有i选中的那个属性就会被选择,不管他本身还有多少种其他属性

    4. 基本筛选器
      $('li:first') $('li:last') $('li:eq(3)') $('li:even') $('li:odd') $('li:gt(3)') $('li:lt(2)')
      //冒号表示在选择的基础上在再进行一次过滤, first第一个, last最后一个, eq(index)找索引的那个
      //even偶数, odd奇数,gt(index), 大于index的所有, lt(index) 小于index的所有
      //这边所有的都是指索引
    5. 表单选择器
      $('[type="text"]') ---------->$(':text') 注意:只适用于input标签: $('input:cheched')

      
    // $('[type=checkbox]').attr('checked','checked')
      
      // $(':checkbox').attr('checked','checked'
     

       6. 关于表单属性选择器: 

      
        :enabled
        :disabled
        :checked
        :selected
    <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>
    表单你属性选择器

      2.筛选器

    1. 过滤筛选器
      $('li').first

      $('li').last
      $('li').eq(3)

      $('ul li').hasclass('test')

       var index=3;
       $(".c3:"+"eq("+index+")").css("color","red");

       $(".c3").eq(3).css('color','red'); //这两种效果是等价的, 但是这种不用拼接字符串, 效率高, 所以过滤筛选器比较推荐这一种

      $('.c1').hasclass('c1') //判断选择器是否含有某个类名

      console.log(
    $('.c1').hasclass('c1')) //返回值为true或者false

    2. 查找选择器

     查找子标签
      $('.p1').children().css('color','red');        //查找所有子标签
      $('.p1').children().first().css('color','red'); //查找子标签中的第一个,下同
      $('.p1').children(':first').css('color','red');

      $('.c9').children('p').css('color','red'); //查找子标签中的p标签
      $('.c9').find('p').css('color','red');        //查找后代中的p标签

     查找兄弟标签
      //向下查找兄弟标签
      $('#i2').next().css('color','red');       //查找选中标签的下一个
      $('#i2').nextAll().css('color','red'); // 查找选中标签
      $('#i2').nextUntil(3).css('color','red'); //从当前标签知道索引,是一个开区间(选中对象,until(index)) 两者都不包含
      
    //向下查找兄弟标签
      
      $('#i2').prev().css('color','red');
      $('#i2').prevAll().css('color','red');
      $('#i2').prevUntil(3).css('color','red');
     查找父标签
        // $('.c10').parent();         //查找父亲
    //$('.c10').parents(); //[p1,p2,p3....html] //查找所有直系祖宗
    // $('c10').parentsUntil() //往上一级级查找祖宗

     注意:子标签会继承父标签的样式

       注:内置方法都是区分大小写的,要注意

    四. 事件的绑定

      页面载入

    
    ready(fn)  // 当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。

    $(document).ready(function(){}) -----------> $(function(){}) 

      事件绑定

    //语法: 选中的标签对象.事件.(function(){})

    eg: $("p").click(function(){})

      事件的委派

    $("").on(even,[selector],[data],fn)  // 在选择元素上绑定一个或多个事件的事件处理函数。
                          //
    $("")选中的元素,on绑定,even事件,select委派的对象,data参数,可不填,fn)时间所要执行的函数
     

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    <script src="jquery-3.3.1.js"></script>
        <script>
            //这个相当于整个网页加载完成
            $(function () {
                           // 语法:$().事件(function(){})
    
                      //  $('ul li').click(function(){
                    // alert(this.innerHTML);            //this当前触发的标签,即一个DOM对象,
                     //相当于                         // 所有要用jquery的方法要转化成jquery对象
                     // alert($(this).html());
                // })
                    
                
                //给ul丙丁事件click,然后把这个事件委派给li,当触发这个事件要执行的函数
                $('ul').on('click','li',function () {
                    alert($(this).html());
                });
    
                //选中add这个标签,选择触发事件,点击h后要执行的函数
                $('.add').click(function (){
                    $('.box').append('<li>789</li>')
    
                })
            })
    
        </script>
    
    </head>
    <body>
    
    <ul class="box">
        <li>123</li>
        <li>234</li>
        <li>456</li>
        <li>567</li>
        <li class="c1">678</li>
    </ul>
    
    <button class="add">add</button>
    
    </body>
    </html>
    例子

    五.  jquery对象的操作

    1.  文本操作
      $('').html() //取值
      $('').text() //取值
      $('').html('参数') //赋值
      $('').text('参数') //赋值 赋值的时候和js一样的,当赋值的是标签的时候,两种赋值的参数的展现形式是不一样的


    2. 属性操作
      $('').attr('参数') //参看参数的值
      $('').attr('参数',''值) //设置属性
      $('p').attr('alex','dsb'); //设置属性
      $('p').attr('alex');        //查看属性操作 只有设置了属性才能查看属性
      $('p').removeAttr('alex'); //删除属性

    3. class操作
      $('test').addClass('xxx') //给class增加一个值xxx
      $('test').removeClass('xxx') //把值为xxx的参数从class列表中删除

    六.  each循环

      在jquery中

    $('p').css('color','red');         //这个语句的作用是把所有的p标签都进行相同的css样式.这是通过jquery的内部循环方式实现的.

      如果对于不同标签进行不同的处理呢!那就需要用到each循环了

    1. 先回顾一下js循环

    //回顾js的循环
    let arr=['美女','帅哥','靓仔','站街的'];
    let obj={'老王':'隔壁的','小王':'老王的'};
    for (var i=0;i<arr.length;i++){

    }

    2.jquery的循环方式  
    //each循环方式一  $代表的是jquery这个类.类就可以使用自己的方法
    $.each(arr,function (i,j) {
    console.log(i,j)
    });
    //结果:循环拿出数组的结果.带有索引
    //0 "美女"
    //1 "帅哥"
    //2 "靓仔"
    //3 "站街的"

    $.each(obj,function(i,j){
    console.log(i,j);
    });

    //结果:
    //老王 隔壁的
    //小王 老王的


    3. 
    //each循环方式二
    $('p').each(function(){
    if ($(this).html()=='tom'){
    // return false //相当于break
    return //相当continue,return的值为undefined,会继续循环
    };

    console.log($(this).html()); //this当前循环的DOM对象
    //console.log(this.innerHTML); //这两个是同价的,只不过对象不同,调用的方法不同
    //$(this).html($(this).html()+'!') //给p标签的文本加一个感叹号(先拿到文本,加完感叹号再赋值给他自己)

    })


      注意:以上实现方法都是通过jquery实现的,自己要去引入jquery

    语法总结:
    1. $.each(obj,function{}) //obj是一个可迭代对象

    2.$('p').each(function{})

    七 . 文档节点的处理

    //创建一个标签对象
        $("<p>")
    
    
    //内部插入
    
        $("").append(content|fn)      ----->$("p").append("<b>Hello</b>");
        $("").appendTo(content)       ----->$("p").appendTo("div");
        $("").prepend(content|fn)     ----->$("p").prepend("<b>Hello</b>");
        $("").prependTo(content)      ----->$("p").prependTo("#foo");
    
    //外部插入
    
        $("").after(content|fn)       ----->$("p").after("<b>Hello</b>");
        $("").before(content|fn)      ----->$("p").before("<b>Hello</b>");
        $("").insertAfter(content)    ----->$("p").insertAfter("#foo");
        $("").insertBefore(content)   ----->$("p").insertBefore("#foo");
    
    //替换
        $("").replaceWith(content|fn) ----->$("p").replaceWith("<b>Paragraph. </b>");
    
    //删除
    
        $("").empty()
        $("").remove([expr])
    
    //复制
    
        $("").clone([Even[,deepEven]])

        
        看一个例子

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    
    <script src="jquery-3.3.1.js"></script>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.css">
    <body>
    
    <h3>员工表格</h3>
    <div class="container">
        <button class="btn btn-info add_btn">添加</button>
        <table class="table table-hover table-striped table-bordered" >
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>部门</th>
                <th>薪水</th>
                <th>操作</th>
            </tr>
        </thead>
         <tbody class="tbody">
         <tr>
             <td>1</td>
             <td>张三</td>
             <td>13</td>
             <td>销售</td>
             <td>30000</td>
             <td>
                 <button class="del btn btn-danger">删除</button>
                 <button class=" edit btn btn-warning">编辑</button>
             </td>
         </tr>
         <tr>
             <td>2</td>
             <td>李四</td>
             <td>18</td>
             <td>技术</td>
             <td>28000</td>
             <td>
                 <button class="del btn btn-danger">删除</button>
                 <button class=" edit btn btn-warning">编辑</button>
             </td>
         </tr>
         <tr>
             <td>3</td>
             <td>王五</td>
             <td>22</td>
             <td>售后</td>
             <td>12000</td>
             <td>
                 <button class="del btn btn-danger">删除</button>
                 <button class=" edit btn btn-warning">编辑</button>
             </td>
         </tr>
         </tbody>
        </table>
    
        <div class="hide add">
            <hr>
            <form id='form' action="">
                <div>
                    姓名
                    <input type="text">
                </div>
                <div>
                    年龄
                    <input type="text">
                </div>
                <div>
                    部门
                    <input type="text">
                </div>
                <div>
                    薪水
                    <input type="text">
                </div>
                    提交
                <input type="button" value="submit" class="submit_btn">
            </form>
        </div>
    </div>
    
    
    <script>
        //添加
        //对添加按钮进行绑定事件
        $('.add_btn').click(function(){
            $('.add').removeClass('hide');
        });
        //创建jquery对象
        //当提交的时候,把是最后一个标签的编号拿到并加1给要创建的哪一个
        $('.submit_btn').click(function () {
            //创建jquery对象
            let $tr=$('<tr>');
            let ID=$('.tbody tr:last td:first').html();
            ID=parseInt(ID)+1;
            let $td1=$('<td>'+ID+'</td>>');
            $tr.append($td1);
            //把form表单的内容遍历一遍,一一放进td内,再添加到tr内
            //这边要注意,form和text有一个空格
            $('#form :text').each(function () {
                let val=$(this).val();
                let $td_temp=$('<td>'+val+'</td>');
                $tr.append($td_temp);
                $td_temp.val('')
            });
    
            //构建操作标签
            $tr.append('<td><button class="del btn btn-danger">删除</button>
    ' +
                '<button class=" edit btn btn-warning">编辑</button></td>');
    
            $('tbody').append($tr); //append参数可以是jquery对象,也可以是标签字符串
            // $('tbody').prepend($tr);  //添加在第一行
            // $tr.appendTo('.tbody');   //把要添加的添加到某个节点,被动的
            $('.add').addClass('hide');
    
        });
    
        //删除事件
        //法一
        // $('.del').click(function(){
        //     $(this).parent().parent().remove();
        // });
        //法二
        $('.tbody').on('click','button.del',function(){
            $(this).parent().parent().remove();
        });
    
    
    </script>
    
    </body>
    </html>

      注意:jquery和bootsript自己要导入!

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-3.3.1.js"></script>
    </head>
    <body>
    
    
    <div class="outer">
        <div class="item">
            <button class="add">+</button><input type="text">
        </div>
    
    
    </div>
    
    <script>
        $(".add").click(function () {
            let $clone=$(this).parent().clone();
            $clone.children("button").html("-").attr("class","rem");
            $(".outer").append($clone);
        });
    
        $(".outer").on("click",".rem",function () {
            $(this).parent().remove();
        })
    
    </script>
    
    
    </body>
    </html>
    节点拷贝实例

    八.  css相关操作

      尺寸操作

            $("").height([val|fn])
            $("").width([val|fn])
            $("").innerHeight()
            $("").innerWidth()
            $("").outerHeight([soptions])
            $("").outerWidth([options])

        demo

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-3.3.1.js"></script>
        <script>
        $(document).ready(function(){
    
                 console.log($(".c1").height());   //就是.c1的高度
                 console.log($(".c1").width());   //就是.c1的宽度
            console.log($('c1').innerHeight() //c1+padding
           
    console.log($('c1').outerHeight() //c1+padding+border
           
    console.log($('c1').outerHeight(true) //c1+padding+border+margin
     

          
       }); </script> <style> .c1{  200px; height: 200px; background-color: skyblue; padding: 50px; border:30px solid red; margin: 20px; } </style> </head> <body> <div class="c1"></div> </body> </html>

    九. jQuery扩展

     1. 扩展jQuery对象本身。

      用来在jQuery命名空间上增加新函数。 

      在jQuery命名空间上增加两个函数:

    <script>
        jQuery.extend({
          min: function(a, b) { return a < b ? a : b; },
          max: function(a, b) { return a > b ? a : b; }
    });
    
    
        jQuery.min(2,3); // => 2
        jQuery.max(4,5); // => 5
    </script>

      2.扩展 jQuery 元素集来提供新的方法(通常用来制作插件)

         增加两个插件方法:

    <body>
    
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    
    <script src="jquery.min.js"></script>
    <script>
        jQuery.fn.extend({
          check: function() {
             $(this).attr("checked",true);
          },
          uncheck: function() {
             $(this).attr("checked",false);
          }
        });
    
    
        $(":checkbox:gt(0)").check()
    </script>
    
    </body>
  • 相关阅读:
    入门activiti-------1简单运行
    JS对象、构造器函数和原型对象之间的关系
    myeclipse配背景色
    maven的pom.xml文件错误
    oracleXE简易版---使用基础
    ognl表达式注意事项
    Executors、ExecutorService、ThreadPoolExecutor
    ThreadPoolExecutor
    Phaser相位(工具的实战案例使用)
    ForkJoin
  • 原文地址:https://www.cnblogs.com/tjp40922/p/10179392.html
Copyright © 2020-2023  润新知