【jQuery】学习一下JS库——jQuery


jQuery

$ == jQuery
顶级对象
$(function(){
    //页面加载完成才执行这里的代码
});

要求掌握:

  • DOM对象和jQuery对象
  • jQuery的使用方法
    • 选择器、样式、动画、属性、元素的创建、增、删、改、查
  • jQuery事件的注册、绑定、委托、解绑

一、jQuery对象

01. 基本概念,区分DOM对象和jQuery对象

  • 原生JS获取来的对象就是DOM对象

  • jQuery方法获取的元素就是 jQuery对象

    • jQuery对象本质是:利用$对DOM对象包装后产生的对象(伪数组形式存储
  • 【注意】jQuery对象只能使用 jQuery方法,D0M对象则使用原生的 JavaScipt属性和方法

02. 两个对象之间的转换

  • DOM对象转换为jquery对象:

    • $(DOM对象)
  • jQuery对象转换为DOM对象:

    • $("element")[index]$(element).get(index)

      伪数组里面的元素即为DOM对象,所以用数组的方法取出DOM对象


二、jQuery的使用方法

关于隐式迭代!!!

  • 遍历内部DOM元素(伪数组形式存储)的过程就叫做隐式迭代
  • 简单理解∶给匹配到的所有元素进行循环遍历,执行相应的方法,而不用手动进行循环

01. 选择器法的方法

(1)$("selector");
  • CSS选择器方法:*tagnameidclass并集选择器交集选择器层级选择器

    使用方法同:CSS选择器、querySelector

  • 筛选选择器::first:last:eq(index):odd:even

    • 特殊:表单里的:checked(筛选被选中的表单元素)
(2)筛选方法
语法描述
.parent()查找父级
.children("selector")查找匹配的子级【亲儿子】
.find("selector")查找匹配选择器的【后代】
.siblings("selector")查找指定的兄弟节点,不包括自己本身,括号为空则为所有兄弟节点(伪数组形式)
.nextAll([expr])查找当前元素之后所有的同级元素
.prevAll([expr])查找当前元素之前所有的同级元素
.hasClass("className")检查当前的元素是否含有某个特定的类,如果有,则返回true
.eq(index)查找父元素中指定索引号所在的子元素, 父元素是jQuery对象(伪数组)

(3)获取祖先元素
  • parent():返回父亲元素

  • parents():返回一个数组,包含所有祖先元素

  • parents("选择器"):返回指定祖先元素

02. 样式的操作

(1)操作样式
  • 获取样式属性值

    • $("element").css("属性名");

      属性名必须加引号

      $("div").css("color");
      
  • 设置样式属性

    • $("element").css("属性名","属性值");

      属性值是数字可以不用单位和引号

    $("div").css("color","red");
    $("div").css("fontSize",20);
    
  • 设置多组样式属性

    • $("element").css({"属性名":"属性值","属性名":"属性值"});

      将参数设置为对象形式,属性名和属性值是键值对的形式,属性与属性之间是用逗号隔开

      $("div").css({
       color:"red",
       width:200,
       backgroundColor:"blue"
      });
      
(2)操作类

【注意】className不用添加 .

  • 添加类

    • $("element").addClass("className")
  • 删除类

    • $("element").removeClass("className")
  • 切换类(没有就添加,有就删除)

    • $("element").toggleClass("className")
$(".father").addClass("big");
$(".father").removeClass("big");
$(".father").toggleClass("big");

03. 事件控制

  • 触发事件

    • $("element").事件
      • 事件:clickmouseover、…(不添加on
  • $("element").hover(function(){},functino(){});

    • 鼠标经过、离开复合事件(类似于CSS中:hover
    • 两个函数参数,第一个函数是鼠标经过触发,第二个函数是鼠标离开触发
    • 只写一个函数,则鼠标经过、离开都会触发相同的函数内部事件
  • 表单事件change:表单发生变化时触发

  • 获得当前元素的索引号

    • $(this).index()

04. 动画效果的实现

(1)元素显示与隐藏效果
  • .show([speed,[easing],[funcition]])

    • 参数可省略
    • speed:动画速度,“fase,normal,slow”,或者是“具体时间”,单位是毫秒
    • easing:动画类型
    • function:回调函数
  • .hide([speed),[easing],[funcition]

    $("btn").click(function(){
        $("target").show("fast");	
        $("target").show(1000);
        $("target").show(1000,function(){
             
         });
    });
    

(2)元素滑动效果
  • slideUp()slideDown()slideToggle()
(3)淡入淡出效果
  • fadeInfadeOutfadeToggle

  • fadeTo:调整透明度(必须有速度和透明度)

    $("div").fadeTo(1000,0.5);
    

(3)动画队列
  • 基本概念:动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行

  • 所以需要停止动画

    • stop():结束上一次动画,必须写在动画前面
  • animate(params,[speed],[ease],[fn])

    • params:需要更改的样式属性,以对象形式传递,不可省略,复合属性采用驼峰命名法
    • 其它参数可省略
    $("div").animate({
        left: 200,
        top: 400
    },2000);
    

05. 属性的获取与设置

(1)固有属性
  • 获取属性:prop("固有属性")
  • 设置属性:prop("固有属性",“属性值”)
(2)自定义属性
  • 获取属性:attr("自定义属性")
  • 设置属性:attr("自定义属性",“属性值”)
  • 移除属性:removeAttr("自定义属性")
(3)数据缓存 data()

这个里面的数据是存放在元素的内存(缓存)里面的

  • 设置属性:data("属性名",“属性值)

    这个属性在DOM结构上是看不到的

  • 获取属性:data("属性名")

    可以获取data()设置的属性

    还可以获取H5新增自定义属性data-属性名,使用时不需要加data-


06. 元素内容

(1)获取元素内容
  • $("div").html():同innerHTML
  • $("div").text():同innerText
  • $("div").val():同value
(2)设置元素内容
  • $("element").html("内容")
  • $("element").text("内容")
  • $("element").val("内容")

  • toFixed(2):可以保留两位小数,使用后变为字符串类型

四、操作

01. 遍历

  • each(function(index,domEle){})
    • 遍历匹配的每一个元素,主要用DOM处理
    • index是每个元素的索引号,domEle是每个DOM元素对象不是jQuery对象
    • 所以要使用jquery方法,就需要将这个dom元素转换为jquery对象:$(domEle)
  • $.each(obj,function(index,element){})
    • 可用于遍历任何对象,主要用于数据处理,比如数组、对象
    • 函数有两个参数:index是每个元素的索引号,elemnet是遍历的内容

02. 创建

  • $("<标签名></标签名>")

    $("<p>这是动态创建的P元素</p>");
    

03. 增加

  • $("parent").append(child):添加子元素child到父元素parent内部末尾

  • $("parent").prepend(child):添加子元素child到父元素parent内部首位


  • $("parent").after("sibling"):添加元素siblingparent元素的后面


04. 删除

  • $("element").remove():删除匹配的元素
  • $("element").empty():删除匹配元素内部的子节点
  • $("element").html(""):直接设置为空

五、事件

01. 注册事件

(1)绑定单个事件

与原生基本一致,比如 click、mouseover、 mouseout、bur、 focus、 change、 keydown、 keyup、 resize、scroll

$("element").click(function(){
  //事件处理程序  
});

(2)绑定多个事件——on
  • 语法结构:

    $("element").on(events,[selector],fn)

    • events:一个或多个用空格分隔的事件类型,如"cick"或" keydown
    • selector:元素的子元素选择器,用于事件委托
    • fn:回调函数,即绑定在元素身上的侦听函数
  • 可以为同一个元素绑定多个事件

    $("div").on({
    	mouseenter:function(){
             //事件处理程序  
        },
    	click:function(){
            //事件处理程序  
        }
    });
    

  • 如果事件处理程序相同,则

    $("div").on("mouseenter mouseleave",function(){
    	$(this).toggle("");
    });
    

  • 事件委托

    $(".father").on("click",".son",function(){
    	//事件绑定在 .father 上,但触发的对象是 .son
    });
    

  • 动态创建元素的绑定事件

    • on可以给未来动态创建的元素绑定事件

02. 解绑事件

  • off(event,[selector])

    $(".father").off("click");
    
    $(".father").off("click",".son")
    
  • 关于one事件:只触发一次事件

    • one(event,[selector])
    $(".father").one("click");
    
    $(".father").one("click",".son");
    

03. 自动触发事件

  • trigger("event")

  • triggerHandler("event"):不会触发元素的默认行为

    $(".father").trigger("click");
    

04. 事件对象

  • 阻止默认行为

    $("div").preventDefault();
    
    // 或者
    return false;
    
  • 阻止冒泡

    $("div").stopPropagation();
    

六、其它方法

01. 对象拷贝

  • 把某个对象拷贝(合并)给另外一个对象使用:$.extend([deep], target, objectl, [objectN])

    • deep:默认为 false 浅拷贝,如果设为true为深拷贝
      • 浅拷贝:把原对象的复杂数据类型的地址拷贝给目标对象,此时原对象和目标对象的复杂数据类型指向同一个对象
      • 深拷贝:把原对象的所有数据完全复制一份并合并到目标对象
    • target:要拷贝的目标对象
    • object1:待拷贝到第一个对象的对象

    浅拷贝会覆盖目标对象的已有数据

    深拷贝会合并目标对象的不冲突的已有数据,冲突的数据仍会覆盖


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值