zoukankan      html  css  js  c++  java
  • 【前端】jquery基础学习

    jQuery引入

    下载链接:[jQuery官网](https://jquery.com/),首先需要下载这个jQuery的文件,然后在HTML文件中引入这个文件,就可以使用这个文件中帮我们提供的jquery的接口了。
    

     

    jquery对象和dom对象

    jquery找到的标签对象称为 -- jquery对象
    原生js找到的标签对象称为 -- dom对象
    dom对象只能使用dom对象的方法,不能使用jquery对象的方法
    jquery对象也是,它不能使用dom对象的方法
    
    dom对象和jquery对象互相转换:
    	jquery对象转dom对象 -- jquery对象[0]  示例:$('#d1')[0]
    	dom对象转jquery对象 -- $(dom对象)
    

     

    jQuery选择器

    基本选择器

    jQuery('#d1')  -- $('#d1')
    基本选择器(同css)
          id选择器:
    
    	$("#id")  #不管找什么标签,用什么选择器,都必须要写$(""),引号里面再写选择器,通过jQuery找到的标签对象就是一个jQuery对象,用原生JS找到的标签对象叫做DOM对象,看我们上面的jQuery对象部分的内容
          标签选择器:
    
    	$("tagName")  $('div')
          class选择器:
    
    	$(".className")  
          配合使用:
    
    	$("div.c1")  // 找到有c1 class类的div标签
          所有元素选择器:
    
    	$("*")
          组合选择器:
    
    	$("#id, .className, tagName")
    
    	选择器找到的可能是多个标签,会放到数组里面,但还是jquery对象,能够直接使用jquery的方法,意思是找到的所有标签进行统一设置,如果要单独设置选中的所有标签中的某个标签,可以通过索引取值的方式找到,然后注意,通过索引取值拿到的标签,是个dom对象
    
    
    

    基本筛选器

    <ul>
        <li>蔡世楠</li>
        <li>尤利阳</li>
        <li id="l3">张雷</li>
        <li>申凯琦</li>
        <li id="l5">程德浩</li>
        <li>罗新宇</li>
        <li>曾凡星</li>
    </ul>
    
    :first  -- 示例:$('li:first') // 第一个
    :last // 最后一个
    :eq(index)// 索引等于index的那个元素
    :even // 匹配所有索引值为偶数的元素,从 0 开始计数
    :odd // 匹配所有索引值为奇数的元素,从 0 开始计数
    :gt(index)// 匹配所有大于给定索引值的元素
    :lt(index)// 匹配所有小于给定索引值的元素
    :not(元素选择器)// 移除所有满足not条件的标签
    :has(元素选择器)// --$('li:has(.c1)')  找到后代中含有满足has里面选择器的那个标签
    :not(:has(.c1)) -- $('li:not(:has(.c1))') 排除后代中含有满足has里面选择器的那个标签
    

     

    属性选择器

    [attribute]
    [attribute=value]// 属性等于
    [attribute!=value]// 属性不等于
    
    // 示例,多用于input标签
    <input type="text">
    <input type="password">
    <input type="checkbox">
    $("input[type='checkbox']");// 取到checkbox类型的input标签
    $("input[type!='text']");// 取到类型不是text的input标签
    

     

    表单筛选器

    找到的是type属性为这个值的input标签中
    :text
    :password
    :file
    :radio
    :checkbox
    :submit
    :reset
    :button
    

    表单对象属性筛选器

    :enabled   #可用的标签
    :disabled  #不可用的标签
    :checked   #选中的input标签
    :selected  #选中的option标签
    

    筛选器方法

    下一个:
        $('#l3').next();  找到下一个兄弟标签
        $('#l3').nextAll(); 找到下面所有的兄弟标签
        $('#l3').nextUntil('#l5');#直到找到id为l5的标签就结束查找,不包含它
    上一个
    	$("#id").prev()
    	$("#id").prevAll()
    	$("#id").prevUntil("#i2")
    父亲元素
        $("#id").parent()
        $("#id").parents()  // 查找当前元素的所有的父辈元素(爷爷辈、祖先辈都找到)
        $("#id").parentsUntil('body') // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止,这里直到body标签,不包含body标签,基本选择器都可以放到这里面使用。
    
    儿子和兄弟元素
    $('ul').children(); 
    $('ul').children('#l3');  #找到符合后面这个选择器的儿子标签
    
    $('#l5').siblings();
    $('#l5').siblings('#l3'); #找到符合后面这个选择器的兄弟标签
    
    
    find
    	$('ul').find('#l3')  -- 类似于  $('ul #l3')
    filter过滤
    	$('li').filter('#l3');
    
    
    .first() // 获取匹配的第一个元素
    .last() // 获取匹配的最后一个元素
    .not()  // 从匹配元素的集合中删除与指定表达式匹配的元素  $('li').not('#l3');
    .has()  // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
    .eq()  // 索引值等于指定值的元素
    

     

    事件

    事件绑定方式

    <script src="jquery.js"></script>
    <script>
       //方式1
       // $('#d1').click(function () {
       //     $(this).css({'background-color':'green'});
       // });
       //方式2
       $('#d1').on('click',function () {
           $(this).css({'background-color':'green'});
      })

    </script>

    常用事件

    click  左键点击事件
       //获取光标触发的事件
       $('[type="text"]').focus(function () {
           $('.c1').css({'background-color':'black'});
      });
       //失去光标(焦点)触发的事件
       $('[type="text"]').blur(function () {
           $('.c1').css({'background-color':'purple'});
      });

       //域内容发生改变时触发的事件
       $('select').change(function () {
           $('.c1').toggleClass('cc');
      });

       //鼠标悬浮触发的事件
       // $('.c1').hover(
       //     //第一步:鼠标放上去
       //     function () {
       //         $(this).css({'background-color':'blue'});
       //     },
       //     //第二步,鼠标移走
       //     function () {
       //         $(this).css({'background-color':'yellow'});
       //     }
       // )

       // 鼠标悬浮 等同于hover事件
       // 鼠标进入
       // $('.c1').mouseenter(function () {
       //     $(this).css({'background-color':'blue'});
       // });
       // 鼠标移出
       // $('.c1').mouseout(function () {
       //     $(this).css({'background-color':'yellow'});
       // });

       // $('.c2').mouseenter(function () {
       //     console.log('得港绿了');
       // });
       // 鼠标悬浮事件
       // $('.c2').mouseover(function () {
       //     console.log('得港绿了');
       // });
       // mouseover 和 mouseenter的区别是:mouseover事件是如果该标签有子标签,那么移动到该标签或者移动到子标签时会连续触发,mmouseenter事件不管有没有子标签都只触发一次,表示鼠标进入这个对象


    //键盘按下触发的事件 eevent事件对象
       $(window).keydown(function (e) {
           // console.log(e.keyCode); //每个键都有一个keyCode值,通过不同的值来触发不同的事件
           if (e.keyCode === 37){
               $('.c1').css({'background-color':'red'});
          }else if(e.keyCode === 39){
               $('.c1').css({'background-color':'green'});
          }
           else {
               $('.c1').css({'background-color':'black'});
          }
      })
       // 键盘抬起触发的事件
       $(window).keyup(function (e) {
           console.log(e.keyCode);
      })


    input事件:
           22期百度:<input type="text" id="search">
           <script src="jquery.js"></script>
           <script>
               $('#search').on('input',function () {
                   console.log($(this).val());
              })

           </script>

    事件冒泡

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            #d1{
                background-color: red;
                height: 200px;
            }
            #d2{
                background-color: green;
                height: 100px;
                 100px;
            }
    
        </style>
    
    </head>
    <body>
    
    <div id="d1">
        <div id="d2"></div>
    
    </div>
    
    
    <script src="jquery.js"></script>
    <script>
        $('#d1').click(function () {
            alert('父级标签');
        });
        $('#d2').click(function () {
            alert('子级标签');
        });
        
    
    </script>
    
    </body>
    </html>
    

    阻止后续事件发生

        $('#d1').click(function () {
            alert('父级标签');
        });
        $('#d2').click(function (e) {
            alert('子级标签');
            return false;
            // e.stopPropagation();
        });
    
    

     

    事件委托

    事件委托是通过事件冒泡的原理,利用父标签去捕获子标签的事件,将未来添加进来的某些子标签自动绑定上事件。
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <div id="d1">
        <button class="c1">爱的魔力转圈圈</button>
    
    </div>
    
    <script src="jquery.js"></script>
    <script>
        // $('.c1').on('click',function () {
        //     alert('得港被雪飞调教了,大壮很难受!');
        //     var btn = document.createElement('button');
        //     $(btn).text('爱的魔力转圈圈');
        //     $(btn).addClass('c1');
        //     console.log(btn);
        //     //添加到div标签里面的后面
        //     $('#d1').append(btn);
        //
        // });
    
    	#将'button' 选择器选中的标签的点击事件委托给了$('#d1');
        $('#d1').on('click','button',function () {
            alert('得港被雪飞调教了,大壮很难受!');
            var btn = document.createElement('button');
            $(btn).text('爱的魔力转圈圈');
            $(btn).addClass('c1');
            console.log(btn);
            console.log($(this)) //还是我们点击的那个button按钮
            //添加到div标签里面的后面
            $('#d1').append(btn);
    
        });
    
    
    </script>
    </body>
    </html>
    

     

    页面载入和window.onload

    1. jquery文件要在使用jquery的代码之前引入
    
    2. js代码最好都放到body标签下面或者里面的最下面来写
    
    3.window.onload
    	// window.onload = function () {
        //     $('.c1').click(function () {
        //         $(this).css({'background-color':'green'});
        //     })
        // }
    4.页面载入,$(function (){alert('xx');}) -- $(document).ready(function(){});
    	页面载入与window.onload的区别
        1.window.onload()函数有覆盖现象,必须等待着图片资源加载完成之后才能调用
        2.jQuery的这个入口函数没有函数覆盖现象,文档加载完成之后就可以调用(建议使用此函数)
        
    示例:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery.js"></script>
        <script>
            // 等待整个页面中的内容全部加载完成之后,触发window.onload对应的函数里面的内容
            // window.onload 有覆盖现象,会被后面的window.onload给重新赋值
            // window.onload = function () {
            //     $('.c1').click(function () {
            //         $(this).css({'background-color':'green'});
            //     })
            // }
    
            
            $(function () {
                $('.c1').click(function () {
                    $(this).css({'background-color':'green'});
                })
            });
    
        </script>
        <script src="xx.js"></script>
    
    
        <style>
            .c1{
                background-color: red;
                height: 200px;
                 200px;
            }
        </style>
    </head>
    <body>
    
    <div class="c1"></div>
    
    <img src="" alt="">
    
    
    </body>
    
    </html>
        
    

     

  • 相关阅读:
    这才是世上最全的“软件测试”思维导图!
    Scrum3.0 敏捷开发白皮书
    敏捷软件质量保证的方法与实践
    C# DataGridView 列的显示顺序
    Xamarin.android 重写axml控件
    Xamarin控件使用之GridView
    Sql 的 RAISERROR用法
    Xamarin.Android 怎么定义一个按钮和返回键功能一样回到上一个界面
    Xamarin.android Activity动画切换效果实现
    Xamarin.Android之封装个简单的网络请求类
  • 原文地址:https://www.cnblogs.com/youxiu123/p/11494135.html
Copyright © 2011-2022 走看看