zoukankan      html  css  js  c++  java
  • JQuery

    jQuery

    jquery对象和dom对象

    jquery找到的标签对象为jquery对象
    原生js找到的标签对象为dom对象
    
    dom对象,只能用dom对象的方法
    jquery对象,只能用jquery对象的方法
    
    转换
    	jquery对象转dom对象--jquery对象[0]
    	dom对象转jquery对象---$(dom对象)
    

    jquery选择器

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

    基本筛选器

    :first // 第一个
    :last // 最后一个
    :eq(index)// 索引等于index的那个元素 支持负数
    :even // 匹配所有索引值为偶数的元素,从 0 开始计数
    :odd // 匹配所有索引值为奇数的元素,从 0 开始计数
    :gt(index)// 匹配所有大于给定索引值的元素
    :lt(index)// 匹配所有小于给定索引值的元素
    :not(元素选择器)// 移除所有满足not条件的标签
    :has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
    找到的任然是li标签
    
    $("li:first")  --->找到的是所以li标签中的第一个
    

    属性选择器

    [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标签
    
    

    层级选择器

    x和y可以为任意选择器
    
    $("x y");// x的所有后代y(子子孙孙)
    $("x > y");// x的所有儿子y(儿子)
    $("x + y")// 找到所有紧挨在x后面的y
    $("x ~ y")// x之后所有的兄弟y
    

    表单筛选器

    :text
    :password
    :file
    :radio
    :checkbox
    :submit
    :reset
    :button
    
    $(':checkbox')    #找到所以的checkbox
    

    表单对象属性筛选器

    :enabled  		可用的标签
    :disabled		不可用的标签
    :checked		选中的标签
    :selected		选中的下拉框
    
    $("input:enabled")    #找到可用的input标签
    
    <select id="s1">
      <option value="beijing">北京市</option>
      <option value="shanghai">上海市</option>
      <option selected value="guangzhou">广州市</option>
      <option value="shenzhen">深圳市</option>
    </select>
    
    $(":selected")  // 找到所有被选中的option
    
    $(":selected")  // 找到所有被选中的option
    

    筛选器方法

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

    |||||||||||||||||||||||||||||||||||||

    标签操作

    样式操作

    样式类操作

    addClass();// 添加指定的CSS类名。
    removeClass();// 移除指定的CSS类名。
    hasClass();// 判断样式存不存在
    toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加。
    
    示例代码
    	$('.c1').addClass('c2');
    	$('.c1').addClass('c2');
    	$('.c1').hasClass('c2');
    	$('.c1').toggleClass('c2');
    

    css样式

    原生JS
    	标签.style.color="red"
    jquery
    	$("p").css("color", "red"); //将所有p标签的字体设置为红色
    	$(".c1")css({color:red,background-color:yellow})  同时操作多个
    
    

    位置操作

    查看位置
    $('.c2').position();  //查看相对位置 
    	{top: 20, left: 20}
    $('.c2').offset();    //查看距离窗口左上角的绝对位置
    	{top: 28, left: 28}
    设置位置
    	$('.c2').offset({'top':'20','left':'40'});
    

    jQuery绑定点击事件的写法

    原生js绑定点击事件
        // $('.c1')[0].onclick = function () {
        //     this.style.backgroundColor = 'green';
        // }
    jquery绑定点击事件
        $('.c1').click(function () {
            $(this).css('background-color','green');
        })
    

    点击事件和滚动事件的示例代码

    $(window).scroll  鼠标滚动事件
    scrollTop()  鼠标滚动的距离
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .c1{
                background-color: red;
                height: 100px;
                 100px;
            }
            .c2{
                background-color: green;
                height: 1000px;
                 100px;
            }
            .c3{
                background-color: blue;
                height: 1000px;
                 100px;
            }
            .s1{
                position: fixed;
                left:20px;
                bottom: 20px;
                height: 40px;
                 80px;
                background-color: purple;
                line-height: 40px;
                text-align: center;
    
            }
            .s1 a{
                color: white;
                font-size: 14px;
                text-decoration: none;
            }
            .hide{
                display: none;
            }
    
    
        </style>
    </head>
    <body>
    <!--<a name="top">这里是顶部</a>-->
    <!--<a>这里是顶部</a>-->
    <span>顶部位置</span>
    <div class="c1"></div>
    
    <button class="change-postion">走你</button>
    
    <div class="c2"></div>
    <div class="c3"></div>
    
    <span class="s1 hide">
        <!--<a href="#top">返回顶部</a>-->
        <span>返回顶部</span>
    
    </span>
    
    
    <script src="jquery.js"></script>
    <script>
    	//点击事件来改变标签位置
        $('.change-postion').click(function () {
            $('.c1').offset({top:200,left:200});
        });
        
    	//滚动事件,监听滚动距离来显示或者隐藏标签
        $(window).scroll(function () {
            console.log($(window).scrollTop());
            if ($(window).scrollTop() >=200){
                $('.s1').removeClass('hide');
            }else {
                $('.s1').addClass('hide');
            }
        });
        
    	// 回到顶部,scrollTop设置值
        $('.s1').click(function () {
            $(window).scrollTop(0);
        })
    
    </script>
    
    </body>
    </html>
    

    尺寸

    $('.c1').height();  //content 高度
    $('.c1').width();   //content 宽度
    $('.c1').innerHeight();//content高度+padding高度
    $('.c1').innerWidth(); //content宽度+padding宽度
    $('.c1').outerHeight();//content高度+padding高度 + border高度
    $('.c1').outerWidth();//content宽度+padding宽度+ border宽度
    
    示例:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .c1{
                 100px;
                height: 100px;
                border: 2px solid red;
                background-color: green;
                padding: 20px 30px;
            }
        </style>
    </head>
    <body>
    <div class="c1"></div>
    
    <script src="jquery.js"></script>
    </body>
    </html>
    

    文本操作

    html()//取得第一个匹配元素的html内容,包含标签内容
    html(val)//设置所有匹配元素的html内容,识别标签,能够表现出标签的效果
    
    text()// 取得所有匹配元素的内容,只有文本内容,没有标签
    text(val)//设置所有匹配元素的内容,不识别标签,将标签作为文本插入进去
    示例:
    $('.c1').text('<h3>你好,太白</h3>');
    $('.c1').html('<h3>你好,太白</h3>');
    

    值操作

    获取值
    	input type='text'的标签--$('#username').val();
    	input type='radio'标签获取被选中的标签的值 --- $(':radio:checked').val();
    	input type='checkbox'标签获取被选中的标签的值 --- 直接$(':checkbox:checked').val();是不行的,需要循环取值  
    		var d = $(':checkbox:checked');
    		for (var i=0;i<d.length;i++){
    			console.log(d.eq(i).val());
    		}
    		
    	单选select --- $('#city').val();
    	多选select --- $('#author').val(); // ["2", "3"]	
    
    设置值
    	input type='text'的标签 --- $('#username').val('李杰');
    	input type='radio'标签 ---  $('[name="sex"]').val(['3']);
    			如果 $('[name="sex"]').val('3'),所有标签的值都变成了'3';
    	input type='checkbox'设置值 --- $('[name="hobby"]').val(['2','3'])
    	单选select --- $('#city').val('1');  option value='1'
    	多选select --- $('#author').val(['2','3'])
    

    属性操作

    attr(attrName)// 返回第一个匹配元素的属性值
    attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
    attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
    removeAttr(attrName)// 从每一个匹配的元素中删除一个属性
    
    示例:
    	设置单个属性
    		$('.c1').attr('xx','oo');
    	设置多个属性
    		$('.c1').attr({'age':'18','sex':'alex'});
    	查看属性
    		$('.c1').attr('属性名');
        	$('.c1').attr('xx');
        删除属性
        	$('.c1').removeAttr('xx');
    
    prop -- 针对的是checkedselecteddisabled..
    
    查看标签是否有checked属性,也就是是否被选中
    	    attr $(':checked').attr('checked'); //checked -- undefined
    	    prop $(':checked').prop('checked'); //true  -- false
    		
    		通过设置属性的方式来设置是否选中:
    			$(':radio').eq(2).prop('checked',true);  true和false不能加引号
    			$(':radio').eq(2).prop('checked',false);
    
    简单总结:
    	1.对于标签上有的能看到的属性和自定义属性都用attr
    	2.对于返回布尔值的比如checkbox、radio和option的是否被选中或者设置其被选中与取消选中都用prop。
    	具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()
    

    文档处理

    添加到指定元素内部的后面
    	$(A).append(B)// 把B追加到A
    	$(A).appendTo(B)// 把A追加到B
    	#添加字符串照样能识别标签  *****
    	$('#d1').append('<a href="http://www.jd.com">京东</a>');
    添加到指定元素内部的前面
    	$(A).prepend(B)// 把B前置到A
    	$(A).prependTo(B)// 把A前置到B
    	示例
    		$('a').prependTo($('div'));
    
    添加到指定元素外部的后面
    	$(A).after(B)// 把B放到A的后面
    	$(A).insertAfter(B)// 把A放到B的后面
    
    添加到指定元素外部的前面
    	$(A).before(B)// 把B放到A的前面
    	$(A).insertBefore(B)// 把A放到B的前面
    	
    移除和清空元素
    	remove()// 从DOM中删除所有匹配的元素。
    	empty()// 删除匹配的元素集合中所有的子节点,包括文本被全部删除,但是匹配的元素还
    	$('div').remove();
    	$('div').empty();
    
    替换
    	replaceWith()
    	replaceAll()
    	示例:
    		var a = document.createElement('a')
    		a.href = 'http://www.baidu.com';
    		a.innerText = 'xxx';
    		
    		$('span').replaceWith(a);
    		$(a).replaceAll('span');
    		
    clone()克隆
    	<button class="btn">屠龙宝刀,点击就送!</button>	
    
        $('.btn').click(function () {
            // var a = $(this).clone(); //克隆标签
            var a = $(this).clone(true);  //连带事件一起克隆
            $(this).after(a);
    
        })
    

    |||||||||||||||||||||||||||||||||||||||||||||||

    事件

    事件绑定方式

        //方式1
        // $('#d1').click(function () {
        //     $(this).css({'background-color':'green'});
        // });
    
        //方式2
        $('#d1').on('click',function () {
            $(this).css({'background-color':'green'});
        })
    

    常用事件

    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>
    

    |||||||||||||||||||||||||||||||||||||||||

    s动画效果

    // 基本
    显示:
    show([s,[e],[fn]])  $('.c1').show()  //show(5000),就是5秒之后显示出来这个标签,并且有一个动画效果,(搞个img图片看看效果 
    
    隐藏
    hide([s,[e],[fn]])  $('.c1').hide()    
    
    反向
    toggle([s],[e],[fn])//这几个toggle的意思就是你原来是什么效果,我就反着来
    
    // 滑动显示(拉窗帘一样
    slideDown([s],[e],[fn])    --->从上到下
    //使用的时候别忘了给标签设置一个高度和宽度,其实就是控制你的标签高度,如果你写
    
    //滑动隐藏
    $('#di').slideUp(5000);意思就是5秒内把你的高度变为0 --->从左到右
    //还有如果你直接操作的是img标签和操作img标签的父级标签,两个的效果是不同的
    slideUp([s,[e],[fn]]) 
    
    //反向滑动
    slideToggle([s],[e],[fn])
    
    // 淡入淡出(控制透明度)
    fadeIn([s],[e],[fn])		显示
    fadeOut([s],[e],[fn])		隐藏
    fadeTo([[s],o,[e],[fn]])  o参数是透明度,0-1的区间,意思是淡入或者淡出到一个多大的透明读
    fadeToggle([s,[e],[fn]])
    // 自定义(了解即可)
    animate(p,[s],[e],[fn])
    

    each循环

    循环标签对象数组
    $('li').each(function(k,v){
    	console.log(k,v);
    });
    
    循环普通数组
    var d1 = ['aa','bb','cc'];
    $.each(d1,function(k,v){
    	console.log(k,v);
    })
    
    跳出循环  return false; 类似于break
    $('li').each(function(k,v){
    	console.log(k,v.innerText);
    	if (k === 1){
    		return false;
    	}
    
    });
    
    跳出本次循环  return; 类似于continue
    $('li').each(function(k,v){
    	
    	if (k === 1){
    		return;
    	}
    	console.log(k,v.innerText);
    });
    

    data

    给标签对象添加数据,类似于添加了全局变量
    	.data(key, value): 设置值
    	.data(key)   取值
    	.removeData(key) 删除值
    

    插件

    <script>
    jQuery.extend({ //$.extend({})
      min:function(a, b){return a < b ? a : b;}, //自定义了一个min和max方法,min和max作为键,值是一个function
      max:function(a, b){return a > b ? a : b;}
    });
    jQuery.min(2,3);// => 2
    jQuery.max(4,5);// => 5
    $('div').min(1,2);不能通过标签对象来调用
    </script>
    
    <script>
      jQuery.fn.extend({  //给任意的jQuery标签对象添加一个方法
        check:function(){
          return this.each(function(){this.checked =true;});
        },
        uncheck:function(){
          return this.each(function(){this.checked =false;});
        }
      });
    // jQuery对象可以使用新添加的check()方法了。
    $("input[type='checkbox']").check();
    </script>
    
    
  • 相关阅读:
    onlyoffice 宋体显示问题排查
    【记录】shell脚本简写
    java 读取jar包内文件方法
    clickhouse升级
    grafana安装升级部署
    grafana新增插件
    ogg复制进程集成模式与经典模式之间切换
    ogg主库目录迁移
    goldengate从库目录迁移
    goldengate如何判断数据是否完成同步
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/11960085.html
Copyright © 2011-2022 走看看