101.《jquery详细总结》

JQuery总结

前言

/* jquery优点
1、轻量级
2、强大的选择器
3、出色的DOM操作的封装
4、可靠的事件处理机制
5、完善的ajax
6、不污染顶级变量
7、出色的浏览器兼容
8、链式操作方式
9、隐式迭代
10、行为层和结构层的分离
11、丰富的插件支持
12、完善的文档
13、开源

jquery库的类型氛围两种
jquery.js  (未压缩版) 开发版本
jquery.min.js  (压缩版) 生产版本:经过工具压缩之后的版本
 */

1.JQuery与原生js对象相互转换

  1.将jQuery转换为dom对象的方法 [index] 或者.get(index):
   a、$(“#form”)[index]
   b、$(“#form”).get(index)
   原生js对象转jQuery对象
  2.只需要把原生对象放入jQuery集合里面
	const div = document.querySelector('div')
	$(div).html('原生js')

2.让权

jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权。

静态函数jQuery.noConflict()的语法如下:
jQuery.noConflict( [ removeAll ] )

3.选择器

一.基本选择器

($(".one").css("color","red")
$(".two")
$("#two")
$("#two,three")

二.层次选择器

    $(".ul li").css("color","red")
    $("li").css("border","1px solid red")
    $(".one+li").css("backgroundColor","green")
    $(".one~li").css("backgroundColor","pink")

三.过滤选择器

  // 基本过滤器
        $("ul>li:first").css("color","red")
        $("ul>li:last").css("color","green")
        $("ul>li:last").css("color","green")
        $("ul>li:eq(4)").css("border","1px solid red")
        $("ul>li:gt(5)").css("backgroundColor","pink")
        $("ul>li:lt(5)").css("backgroundColor","green")
        $("ul>li:odd").css("backgroundColor","yellow")
        $("ul>li:even").css("color","white")
        $("ul>li:not(.name)").css("backgroundColor","#555")
   // 属性过滤
        $(".odiv>p[title=123]").css("color","red")
        $(".odiv>p[class^=z]").css("color","yellow")
        $(".odiv>p[id*=n]").css("border","1px solid red")
        $(".odiv>p[name$=x]").css("backgroundColor","yellow")
    // 表单选择器
        $(":password").val("123")
        $(":text").val("你好 我在测试")
        $(":button").val("btn")
        $(":submit").val("你好  提交")
        $(":reset").val("这里是重置按钮")
        $(":input").attr("width","300px")
        console.log($(":input:disabled"));

4.遍历节点操作

        $("ul").children().css("color","red") 			 	    $("ul").children("p").css("backgroundColor","red")
        $(".two").next().css("backgroundColor","yellow")
        $(".two").nextAll().css("fontSize","50px")
        $(".two").prev().css("fontSize","20px")
        $(".two").prevAll().css("color","pink")
        $("ul").siblings().css("backgroundColor","green")
        
// 遍历父节点  		$("th").parent().css({"color":"white","width":"100px","height":"100px","backgroundColor":"yellow"})        
     $("th").parents().css({"color":"white","width":"100px","height":"100px","backgroundColor":"yellow"})
                                    $("th").parents("tr").css({"color":"white","width":"100px","height":"100px","backgroundColor":"yellow"})
                                    
                                    
// 过滤节点
  $("ul").find("li").css("color","red")
  $("li").filter(".one").css("color","green")
  $("li").not(".one").css("border","1px solid green")
  
  
  

5.属性操作

 $(".three").attr("title","你好 这里是标题");
        $(".three").attr("color","你好  这里是颜色");
        // 弹出
        alert( $(".three").attr("color"))

6.Class操作

<style>
    .color{
        color: red;
        font-size: 30px;
    }
    .bg{
        background-color: rosybrown;
        color: white;
        font-size:40px;
    }
</style>

// jq操作元素的calss属性
    // jq提供四个方法操作calss
    // addClass()  追加
    // removeClass() 删除calss
    // hasClass() 查找
    // toggleClass() 有就删除,没有就添加
    // is()   判断是否有class  calss必须加上.
    
//1.添加样式
    $(".two").addClass("color")
//2.删除样式
	$(".two").removeClass("color")
//3.查找样式
	 console.log($('div').hasClass('Clo')); //true
// toggleClass() 有就删除,没有就添加
 	  $(".four").toggleClass("bg")

7.操作内容

 操作标签内容
// html()  类似于innerHTML() 识别标签
// text()  类似于innerText() 不识别标签

// 获取
    console.log($('div').html());
    // 设置
    $('div').html('家不可一日无主')
    // 设置  含有字符串标签
    $('div').html('<h6>老子想尔注</h6>')

    // 获取
    console.log($('div').text());
    // 设置
    $('div').text('家不可一日无主')
    // 设置  含有字符串标签
    $('div').text('<h6>老子想尔注</h6>')

8.JQuery循环

  	    // jQuery 提供了两种遍历方式
        // 1、jquery对象.each()
        // 2、$.each()
        // 1、$.each(数组,function(index,item){})
        // 2、$.each(对象,function(key,val){})
        var  arr=['鲁智深','武松','晁盖','宋江','林冲','卢俊义','李逵'] 
        $.each(arr,function(index,item){
            console.log(index+'------'+item);
        })
        var obj={
            'history1':"倒拔垂杨柳",
            'history2':"风雪山神庙",
            'history3':"杨志卖刀",
            'history4':"醉打蒋门神",
            'history5':"怒杀阎婆惜"
        }
        $.each(obj,function(key,val){
            console.log(key+'------'+val);
        })
        // 1.6 不支持对象,1.6以上对象和数组都可以
        // $.map(数组,function(index,item){})
        // $.map(对象,function(key,val){})
        // 和$.each() 区别  函数中第一个参数表示项,第二个参数表示下标 
       var arr1= $.map(arr,function(item,index){
            console.log(item)
            return '水浒传'+item
        })
        console.log(arr1)
        var obj1= $.map(obj,function(val,key){
            return '事迹:'+val
        })
        console.log(obj1)

8.深浅拷贝

    // 基本数据类型比较的是值
    // 引用数据类型比较的是地址
    // 浅拷贝(一改全改  地址指向的是同一个地址)
    var obj={
        a:{
            name:'张三'
        }
    }
    var obj1=obj
    obj1.a.name='李四'
    console.log(obj);
    // jQuery里的拷贝
    var obj2={}
    //1、深拷贝 (重新开辟一个地址存放拷贝的值)
    var obj3=$.extend(true,obj2,obj)
    console.log(obj3)
    obj3.a.name='李四'
    console.log(obj);
    console.log(obj3)

    //2、 浅拷贝 (一改全改)
    // var obj3=$.extend(obj2,obj)
    // console.log(obj3)
    // obj3.a.name='李四'
    // console.log(obj);
    // console.log(obj3)

9.原生js模拟深浅拷贝1

        //判断类型 是数组还是对象
        function getType(data) {
            return Object.prototype.toString.call(data).slice(8, -1);
        }

        function deepCopy(data) {
            //1.根据数据类型,创建对应空数组或者空对象
            if (getType(data) === "Array") {
                var res = [];
            } else if (getType(data) === "Object") {
                var res = {};
            } else {
                return data;
            }
            //2.循环赋值
            for (var key in data) {
                // console.log(getType(data[key]));
                // 在循环过程中,如果遇到一个对象,
                // 针对于这个对象再进行深拷贝
                if ((getType(data[key]) =='Array')||(getType(data[key]) =='Object')) {
                    res[key] = deepCopy(data[key]); //递归
                } else {
                    res[key] = data[key];
                }
            }
            //3.返回复制好的对象
            return res;
        }

        var arr = ['鲁智深', '宋江', {
            name: '晁盖'
        }, ['西施', '杨贵妃']]
      var arr3 = deepCopy(arr)

      arr3[2].name='kkk'
      console.log(arr);

10.原生js模拟深浅拷贝2

 // var  arr=['鲁智深','宋江',{
        //     name:'晁盖'
        // },['西施','杨贵妃']]

        //     var obj={
        //         name:'张三',
        //         age:24
        //     }

        // 对象的深拷贝1
        // var obj = {
        //     name: 'FungLeo',
        //     sex: 'man',
        //     old: '18'
        // }
        // var obj2 = JSON.parse(JSON.stringify(obj))
        // obj2.name='kkk'
        // console.log(obj)
        // console.log(obj2);


        // 对象的深拷贝2
        // var obj = {
        //     name: 'FungLeo',
        //     sex: 'man',
        //     old: '18'
        // }
        // var obj2 = copyObj(obj)
        // function copyObj(obj) {
        //     let res = {}
        //     for (var key in obj) {
        //         res[key] = obj[key]
        //     }
        //     return res
        // }

        // obj2.name='kkkk'
        // console.log(obj2,obj);

        // 数组的深拷贝1
        // var arr = [1,2,3,4,5]
        // var arr2 = arr.concat()
        // arr[2] = 5
        // console.log(arr)
        // console.log(arr2)
        // 数组的深拷贝1
        var arr = [1,2,3,4,5]
        var arr1 = copyObj(arr)
        function copyObj(arr) {
            let res = []
            for (var key in arr) {
                res[key] = arr[key]
            }
            return res
        }
        arr[3]='9'
        console.log(arr1);
        console.log(arr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值