zoukankan      html  css  js  c++  java
  • Jquery浅析

    jquery

    通过jquery改变标签字体颜色

    $('#b1').css('color','black')
    选择标签 指定css样式
    

    jquery和js对象之间值转化

    var d1Ele = document.getElementById('b1')
    d1Ele
    
    <div id="b1">
        lalallalalallal
    </div>
    
    // js拿到的是原生的js对象
    
    $('#b1')
    k.fn.init [div#b1]
    // 拿到的是jquery对象
               
               
    var dEle = $('#b1')[0];
    dEle
    
    <div id="b1">
        lalallalalallal
    </div>
    
    // jquery对象转js对象
    
    $(dEle)
    k.fn.init [div#b1]
               
    // 原生js对象转jquery
               
    // 注:js对象不能调用jquery对象的方法,反之亦然
    

    Jquery基本选择器

    • id选择器
    $('#d1')
    
    • 类选择器
    $('.c1')
    
    • 标签选择器
    $('p')
    
    • 组合选择器
    $('#d1,.c1,p')  // 用逗号隔开
    

    Jquery层级选择器

    • 后代选择器 下面的所有
    $('#d1 span')
    
    • 儿子选择器 下面的一个缩进级别的
    $('#d1>span')
    
    • 毗邻选择器 相邻
    $('#d1+span')
    
    
    • 弟弟选择器 同级别的
    $('#d1~span')
    
    

    基本筛选器

    • 找全部
    $('ul li')
    
    
    • 找第一个
    $('ul li:first')
    
    
    • 找最后一个
    $('ul li:last')
    
    
    • 按照索引去找
    $('ul li:eq(2)')
    
    
    • 按照每个标签的偶数去寻找
    $('ul li:even(2)')
    
    
    • 按照每个标签的基数去寻找
    $('ul li:odd')
    
    
    • 索引大于多少的
    $('ul li:gt(3)')
    
    
    • 索引小于多少的
    $('ul li:lt(3)')
    
    
    • 不要哪一个索引
    $('ul li:not(3)')
    
    
    • 指定标签中有哪些标签之类的取值
    $('div').has('a')
    
    

    操作类属性

    • 删除
    $('.c1').removeClass('bg_green')
    
    
    • 有则删,无则加
    $('.c1').toggleClass('bg_green')
    
    

    模太框

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
        <style>
            .cover {
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                background-color: rgba(128, 128, 128, 0.3);
                z-index: 999;
            }
    
            .modal {
                position: fixed;
                top: 50%;
                left: 50%;
                 400px;
                height: 200px;
                margin-top: -100px;
                margin-left: -200px;
                z-index: 1000;
                background-color: white;
            }
    
            .hide {
                display: none;
            }
        </style>
    </head>
    <body>
    <button id="show">出来吧</button>
    
    <div class="cover hide"></div>
    <div class="modal hide">
        <button id="cancel">消失吧</button>
    </div>
    
    <script>
        let b1Ele = $('#show')[0];
        let $cEle = $('.cover');
        let $mEle = $('.modal');
        let b2Ele = $('#cancel')[0];
    
        b1Ele.onclick = function () {
            $cEle.removeClass('hide');  // 删除
            $mEle.removeClass('hide')
        };
    
        b2Ele.onclick = function () {
            $cEle.addClass('hide');  // 添加
            $mEle.addClass('hide')
        }
    
    </script>
    
    

    表单筛选器

    $('input[type='text']');
    $(':text')  // 专门用来获取input这样的
    $(':checked') // 会将option默认的selected属性标签也找到
    $('input:checked'); // 这个时候加上标签名就会做精确度区分
    
    

    筛选器方法

    # 避免$('input:first')太麻烦
    $('input').first()  // 找第一个元素
    
    $("#id").next()  // 找下一个这个元素
    $("#id").nextAll() // 找同级所有的
    $("#id").nextUntil("#i2") // 知道找到什么为止,且不包含
    
    $("#id").prev()  // 上一个
    $("#id").prevAll()  // 上面所有的
    $("#id").prevUntil("#i2")  // 知道找到什么为止,且不包含
    
    $("#id").parent() // 找到自己的父标签
    $("#id").parents()  // 查找当前元素的所有的父辈元素
    $("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。
    
    $("#id").children();// 儿子们
    $("#id").siblings();// 兄弟们
    
    

    设置多个css样式:

    $('#p1').css({'color':'red','width':'width','height':'400px'})
    // 设置多个css样式需要使用自定义对象建值对形式
    
    

    位置操作:

    offset()// 获取匹配元素在当前窗口的相对偏移或设置元素位置
    position()// 获取匹配元素相对父元素的偏移
    scrollTop()// 获取匹配元素相对滚动条顶部的偏移
    scrollLeft()// 获取匹配元素相对滚动条左侧的偏移
    
    

    .offset()方法允许我们检索一个元素相对于文档(document)的当前位置。

    .position()的差别在于: .position()是相对于相对于父级元素的位移。

    尺寸:

    height():高度
    width():宽度
    innerHeight():  文本+padding
    innerWidth():
    outerHeight():   文本+padding+border
    outerWidth():
    
    

    文本操作

    • HTML代码:
    html()// 取得第一个匹配元素的html内容
    html(val)// 设置所有匹配元素的html内容
    
    
    • 文本值:
    text()// 取得所有匹配元素的内容
    text(val)// 设置所有匹配元素的内容
    
    
    • 值:
    val()// 取得第一个匹配元素的当前值
    val(val)// 设置所有匹配元素的值
    val([val1, val2])// 设置多选的checkbox、多选select的值
    
    

    设置值:

    $(':text').val()  // 获取当前输入框的值
    $(':text').val('嘿嘿嘿'); // 设置值
    
    

    属性操作

    • 返回第一个匹配元素的属性值
    $('#d1').attr('id')
    
    
    • 为所有匹配元素设置一个属性值
    $('#d1').attr('name','lmd')
    
    
    • 为所有匹配元素设置多个属性值
    $('#d1').attr({'name2':'lmd','name1':'lmd'})
    
    

    动态获取属性如用户选择

    $('#12').prop('checked')  // checked获取标签的属性
    $('#12').removeProp() // 移除属性
    
    
    

    attr对checkbox和radio进行赋值操作时注意:

    // 在1.x及2.x版本的jQuery中使用attr对checkbox进行赋值操作时会出bug,在3.x版本的jQuery中则没有这个问题。为了兼容性,我们在处理checkbox和radio的时候尽量使用特定的prop(),不要使用attr("checked", "checked")。
    <input type="checkbox" value="1">
    <input type="radio" value="2">
    <script>
      $(":checkbox[value='1']").prop("checked", true);
      $(":radio[value='2']").prop("checked", true);
    </script>
    
    

    prop和attr的区别:

    attr全称attribute(属性)

    prop全称property(属性)

    虽然都是属性,但他们所指的属性并不相同,attr所指的属性是HTML标签属性,而prop所指的是DOM对象属性,可以认为attr是显式的,而prop是隐式的。

    举个例子:

    <input type="checkbox" id="i1" value="1">
    
    

    针对上面的代码

    $("#i1").attr("checked")  // undefined
    $("#i1").prop("checked")  // false
    attr获取一个标签内没有的东西会得到undefined,而prop获取的是这个DOM对象的属性,因此checked为false。
    
    

    换成下面的代码:

    <input type="checkbox" checked id="i1" value="1">
    
    

    再执行:

    $("#i1").attr("checked")   // checked
    $("#i1").prop("checked")  // true
    
    

    这已经可以证明attr的局限性,它的作用范围只限于HTML标签内的属性,而prop获取的是这个DOM对象的属性,选中返回true,没选中返回false。

    接下来再看一下针对自定义属性,attr和prop又有什么区别:

    <input type="checkbox" checked id="i1" value="1" me="自定义属性">
    
    

    执行以下代码:

    $("#i1").attr("me")   // "自定义属性"
    $("#i1").prop("me")  // undefined
    
    

    可以看到prop不支持获取标签的自定义属性。

    总结一下:

    1. 对于标签上有的能看到的属性和自定义属性都用attr
    2. 对于返回布尔值的比如checkbox、radio和option的是否被选中都用prop。

    文档处理

    • 添加到指定元素内部的后面
    $(A).append(B)// 把B追加到A
    $(A).appendTo(B)// 把A追加到B
    
    
    • 添加到指定元素内部的前面
    $(A).prepend(B)// 把B前置到A
    $(A).prependTo(B)// 把A前置到B
    
    
    • 添加到指定元素外部的后面
    $(A).after(B)// 把B放到A的后面
    $(A).insertAfter(B)// 把A放到B的后面
    
    
    • 添加到指定元素外部的前面
    $(A).before(B)// 把B放到A的前面
    $(A).insertBefore(B)// 把A放到B的前面
    
    
    • 移除和清空元素
    remove()// 从DOM中删除所有匹配的元素。
    empty()// 删除匹配的元素集合中所有的子节点。
    
    
    • 替换
    replaceWith()
    replaceAll()
    
    

    克隆事件

    click:是绑定事件的名字
    $('button').on('click',function()){
                   alert(123)
                   }
                   
    this:相当于self 是一个的对象
    $('button').on('click',function()){
                   $(this).clone()
                   }
                   
    $('button').on('click',function () {
            $(this).clone().insertAfter(this);
        })
    克隆标签:默认情况下只克隆标签的文本和样式不克隆事件 
                   
    clone加上true是克隆保留事件,克隆事件且标签如果存在的情况下会从当前位置移动走,然后添加到被选元素之后               
    $('button').on('click',function () {
            $(this).clone(true).insertAfter(this);
        })
    
    

    绑定事件的两种方式:

    // 第一种
    		$('div').click(function(){
    			事件代码
    		})
    // 第二种
    		$('div').on('事件名',function(){
    			事件代码
    		})
    
    

    取消标签自带的事件的两种方式:

    // 第一种:
    		return false
    // 第二种,func要加上形参:
    		e.preventDefault();
    
    

    悬浮事件:

    $('p').hover(  // 鼠标放上去的执行函数 
        function () {  
            alert('How Much?')
    },
        function () { 
            alert("欢迎老板下次再来,记得我是4号哟!")
        }
    )
    
    

    input实时获取可用于验证用户名是否存在:

    $('input').on('input',function () {
        console.log(this.value)
    });
    // focus/blur 其他同理js事件
    
    

    事件冒泡:

    在一个标签内部,这层函数执行完成汇报给上一级如果上一级有事件就会被执行
    阻止事件冒泡:
    		在函数内部加一句取消事件冒泡的代码,需要加上形参e
    div>p>span  // 三者均绑定点击事件
    $("span").click(function (e) {
            alert("span");
            e.stopPropagation();  // 阻止事件冒泡
        });
    
    

    事件委托

    将触发的的事件委托给内部某个标签去执行
    无论改标签是初始化还是后期动态添加进去的
    前期初始化了后期添加进来就没有事件效果了
    <button>按钮</button>
    <script src="jQuery-3.3.1.js"></script>
    <script>
        $('body').on('click','button',function () {
            alert(123)
        })
    </script>
    
    

    文档加载:

    • 第一种
    $(document).ready(function(){ // 文件全部读取结束
    					// 在这里写你的JS代码...
    					})
    
    
    • 第二种
    $(function(){  // 执行完成在执行这个函数
    				// 你在这里写你的代码
    				})
    
    
    • 第三种
    // 直接在body内部最下方书写代码
    
    

    动画效果:

    // 标签记得设置高和宽
    
    $('img').hide(5000) // 隐藏
    $('img').show(5000) // 显示
    
    $('img').slideDown(5000) //向上滑动隐藏
    $('img').slideUp(5000) // 从底部向上滑入
    
    $('img').fadeIn(5000) //  淡入
    $('img').fadeOut(5000)// 渐隐
    $('img').fadeTo(5000,0.4) // 淡出到一定到透明度
    
    

    each循环:

    $.each(array,function(index){
      console.log(array[index])
    })  
    
    $.each(array,function(){
      console.log(this);
    })
    
    // 支持简写
    $divEles.each(function(){
      console.log(this)  // 标签对象
    })
    
    $.each($('div'),function(index)){
           console.log(index)
           }// 类似于for循环从array这个可迭代对象种循环取值交给后面的函数去执行
           
    $('div').each(function){
      console.log(this)
    }// 类似于for循环从array这个可迭代对象种循环取值交给后面的函数去执行
    
    

    Data零时仓库标签,可以让任何标签帮你存储数据

    $("div").data("k",100);//给所有div标签都保存一个名为k,值为100
    $("div").data("k");//返回第一个div标签中保存的"k"的值
    $("div").removeData("k");  //移除元素上存放k对应的数据
    
    
    宁可清贫自乐,不可浊富多忧
  • 相关阅读:
    Docker数据卷
    Hyperloglog算法
    Greenplum6.9集群安装文档
    Java实现线程间通信方式
    计算机存储管理方式
    greenplum6.9踩坑总结
    Linux 内核参数Overcommit_memory(最近生产中Airflow和Greenplum有被这个参数坑到......)
    Airflow概念
    airflow安装文档
    基于Docker进行Zookeeper集群的安装
  • 原文地址:https://www.cnblogs.com/limengda/p/10976353.html
Copyright © 2011-2022 走看看