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>
    
    
  • 相关阅读:
    第二十一章流 1流的操作 简单
    第二十章友元类与嵌套类 1友元类 简单
    第十九章 19 利用私有继承来实现代码重用 简单
    第二十章友元类与嵌套类 2嵌套类 简单
    第十九章 8链表类Node 简单
    第二十一章流 3用cin输入 简单
    第十九章 10 图书 药品管理系统 简单
    第十九章 11图书 药品管理系统 简单
    第二十一章流 4文件的输入和输出 简单
    第十九章 12 什么时候使用私有继承,什么时候使用包含 简单
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/11960085.html
Copyright © 2011-2022 走看看