详解jQuery

目录

一、jQuery的顶级对象

二、jQuery对象和DOM对象

三、jQuery对象和DOM对象的相互转换

四、jQuery基本和层级选择器

(一)基本选择器

(二)层级选择器

五、jQuery隐式迭代(重要)

六、jQuery筛选选择器

七、jQuery筛选方法

八、jQuery的排他思想

九、jQuery链式编程

十、jQuery样式操作

(一)css方法

(二)设置类样式方法

(三)类操作与className的区别

十一、jQuery效果

(一)显示与隐藏

(二)滑动效果

(三)动画队列及其停止排队方法

(四)淡入淡出以及突出

(五)自定义动画animate

十二、jQuery属性操作

(一)设置或获取元素固有属性值 prop()

(二) 获取元素自定义属性 attr()

(三) 数据缓存 data()

十三、jQuery内容文本值

 十四、jQuery元素操作

(一)遍历元素

(二)创建元素

(三)添加元素

 (四)删除元素

十五、jQuery尺寸、位置操作

(一)尺寸

(二)位置操作

十六、jQuery事件注册

(一)单个事件注册

(二)事件处理on() 绑定事件

(三)事件处理off() 绑定事件

(四)自动触发事件 trigger()

十七、jQuery事件对象

十八、jQuery插件

(一)常用网站

(二)使用步骤

十九、jQuery多库共存

二十、jQuery对象拷贝



一、jQuery的顶级对象

jQuery的顶级对象是$,同时也是jQuery的别称。

jquery(function(){
    jquery("div").hide()
})
$(function(){
    $("div").hide()
})


二、jQuery对象和DOM对象

1.DOM对象:用原生的js获取过来的对象就是DOM对象
2.jQuery对象:用jQuery方式获取过来的对象是jQuery对象。 本质:通过$把DOM元素进行了包装。
3.jQuery对象只能使用jQuery方法,DOM对象则使用原生的JavaScript属性和方法。

var myDiv = document.querySelector('div);
$('div')


三、jQuery对象和DOM对象的相互转换

1.DOM对象转换为jQuery对象===>$(DOM对象)
2.jQuery对象转换为DOM对象

①$('div')[index]  index是索引号
②$('div').get(index) index是索引号

四、jQuery基本和层级选择器

(一)基本选择器

$("选择器")===> 里面选择器直接写CSS选择器即可,但是要加引号。

<div class="nav"></div>
$('.nav')

(二)层级选择器

1.子代选择器

$('ul>li')

使用>号,只会获取亲儿子层级的元素,不会获得孙子层级的元素

2.后代选择器

$('ul li')

使用空格,代表后代选择器,获取ul下的所有li元素,包括孙子层级的元素

五、jQuery隐式迭代(重要

遍历内部DOM元素(伪数组形式存储)的过程就叫做隐式迭代,简单来说,就是给匹配到的所有元素进行循环遍历,执行相应的方法,而不用我们再进行循环,简化操作,方便我们调用。

$('div').css('属性','值')

例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="./jquery.min.js"></script>
</head>

<body>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <ul>
        <li>相同的操作</li>
        <li>相同的操作</li>
        <li>相同的操作</li>
        <li>相同的操作</li>
    </ul>
    <script>
        // 1.获取四个div元素
        console.log($('div'));
        // 2.给四个div设置背景颜色 jquery对象不能使用style
        $('div').css('background','pink')
        $('ul').css('background','pink')
        // 3.给内部每个元素进行循环遍历,简化我们的操作
        $('ul li').css('color','white')
    </script>
</body>

</html>

六、jQuery筛选选择器

:first 获取第一个元素

:last 获取最后一个元素

:eq(index) 获取第几个元素,索引值从0开始

:odd 获取索引号为奇数的元素

:even 获取索引号为偶数的元素

$(function(){
    $("ul li:first").css("color","red"); // 筛选第一个 最后一个last
    $("ol li:eq(3)").css("color","green"); // 筛选第几个元素
    $("ol li:odd").css("color","blue"); // 筛选奇数
    $("ul li:even").css("color","yellow") // 筛选偶数
})

七、jQuery筛选方法

parent()--->查找父级

parents()--->可以返回指定祖先元素
children()--->查找亲儿子
find()--->可以选择里面所有的元素 包括儿子和孙子
siblings()--->查找亲兄弟

eq()--->查找第n个元素

八、jQuery的排他思想

想要多选一的效果,当前的元素有样式,其余兄弟元素消除样式,主要用到了隐式迭代

例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="./jquery.min.js"></script>
</head>

<body>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <button>快速</button>
    <script>
        $(function () {
            // 1.隐式迭代 给所有按钮绑定了点击事件
            $("button").click(function () {
                // 2.当前元素变化背景颜色
                $(this).css("background", "pink");
                // 3.其余兄弟去掉背景颜色 隐式迭代
                $(this).siblings("button").css("background", "")
            })
        })
    </script>
</body>

</html>

九、jQuery链式编程

节约代码量,让代码看起来更加整洁

$(this).css("color","blue").siblings("button").css("color","")

一定要注意是给哪个元素增加样式!!!

十、jQuery样式操作

jQuery可以使用css方法来修改简单元素样式;也可以操作类,修改多个样式。

(一)css方法

1.参数只写属性名,则返回的是属性值;
$("div").css("width")
2.想要修改样式,利用"属性名","属性值"来修改,值为数字时可以不用加引号
$("div").css("width","300px")
3.参数可以是对象形式,方便设置多组样式,属性名和属性值用冒号隔开,属性可以不用加引号
background-color,复合属性要用驼峰命名法
如果值不是数字要加引号
$("div").css({"background-color":"red",height:"500px"})

(二)设置类样式方法

作用等同于以前的classList,可以操作类样式,注意操作类里面的参数不要加点。

1.添加类 addClass()
$("div").click(function(){
   $(this).addClass("current")
})

2.删除类 removeClass()
$("div").click(function(){
   $(this).removeClass("current")
})

3.切换类 toggleClass()
$("div").click(function(){
   $(this).toggleClass("current")
})

(三)类操作与className的区别

原生JS中的className会覆盖元素原先的类名;
jQuery里面的类操作只是对指定类进行操作,不会影响原先的类名

十一、jQuery效果

(一)显示与隐藏

1.显示 show()

$("button").eq(0).click(function () {
    $("div").show("slow", function () {
         // alert(1)
    })
})

2.隐藏 hide()

$("button").eq(1).click(function () {
    $("div").hide("fast", function () {
       // alert(1)
    })
})

3.切换显示与隐藏 toggle()

$("button").eq(2).click(function () {
     $("div").toggle("fast", function () {
         // alert(1)
     })
})

(二)滑动效果

$(function () {
    $("button").eq(0).click(function () {
         // 下拉滑动 slideDown()
         $("div").slideDown()
    })
    $("button").eq(1).click(function () {
         // 上拉滑动 slideup()
         $("div").slideUp()
    })
    $("button").eq(2).click(function () {
         // 滑动切换 slideToggle()
         $("div").slideToggle()
     })
})

1.上拉滑动  slideUp()

2.下拉滑动  slideDown()

3.滑动切换  slideToggle()

(三)动画队列及其停止排队方法

1.动画或效果队列

动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行

2.停止排队

stop()
用于停止动画效果;
写到动画或者效果前面,相当于停止结束上一次的动画

(四)淡入淡出以及突出

$(function () {
    $("button").eq(0).click(function () {
          // 淡入 fadeIn()
          $("div").fadeIn()
    })
    $("button").eq(1).click(function () {
          // 淡出 fadeOut()
          $("div").fadeOut()
    })
    $("button").eq(2).click(function () {
          // 淡入淡出切换 fadeToggle()
          $("div").fadeToggle()
    })
    $("button").eq(2).click(function () {
          // 修改透明度 速度和透明度必须要写
          $("div").fadeTo(1000,0.5)
    })
})

1.淡入 fadeIn()

2.淡出 fadeOut()

3.淡入淡出切换 fadeToggle()

4.修改透明度 fadeTo()

效果参数:opacity透明度必须写,取值0~1之间;speed速度必须写

(五)自定义动画animate

$(function () {
        $("button").click(function () {
            $("div").animate({
               left: 200,
               top:300,
               opacity:.4,
               width:500
        },500)
    })
})

params:想要更改的样式属性,以对象形式传递,必须写,属性名可以不用带引号,如果是复合属性则需要采取驼峰命名法。

十二、jQuery属性操作

(一)设置或获取元素固有属性值 prop()

所谓元素固有属性就是元素本身自带的属性,比如<a>元素里面的href,或者是<input>中的type。

1.获取属性语法

prop("属性")

2.设置属性语法

prop("属性","属性值")

(二) 获取元素自定义属性 attr()

用户自己给元素添加的属性是自定义属性。

1.获取属性语法

attr("属性")

2.设置属性语法

attr("属性","属性值")

(三) 数据缓存 data()

data()方法可以在指定的元素上存取数据,并不会修改DOM元素结构。一旦页面刷新,之前存放的数据都将被移除。

$(function () {
   // 1.prop() 获取元素固有的属性值
   console.log($("a").prop("href"))
   $("a").prop("title","京东");
   $("input").change(function(){
   console.log($(this).prop("checked"));
   });
   // 2.attr() 元素的自定义属性
   console.log($("div").attr("index"));
   $("div").attr("index",4);
   console.log($("div").data("data-index"));
   // 3.data() 数据缓存 这个里面的数据是存在元素的内存里面
   $("span").data("uname","andy")
   console.log($("span").data("uname"));
   // 这个方法获取h5自定义属性data-index,与上面的区别是,不用写data-,而且返回的是数字型
   console.log($("div").data("index"));
})

十三、jQuery内容文本值

普通元素内容html()  相当于原生inner HTML

html()   获取元素的内容

html("内容")   设置元素的内容

 十四、jQuery元素操作

(一)遍历元素

jQuery隐式迭代是对同一类元素进行同一操作,而遍历是对同一类元素做不同的操作。

$.each()方法可以用于遍历任何对象,主要用于数据处理,比如数组、对象。

其中,index是每个元素的索引号;domEle是DOM元素对象,不是jQuery对象。

要想使用jQuery方法,需要给这个DOM元素转换为jQuery对象$(domEle)

 // 1.each()方法遍历元素
 var arr = ["red","green","blue"]
 $("div").each(function (index, domEle) {
     // 回调函数的第一个参数一定是索引号,自己也可以指定索引号
     console.log(index);
     // 回调函数的第二个参数一定是dom元素对象 没有css方法
     console.log(domEle);
     $(domEle).css("color",arr[index])
     // 因为是字符,所以在相加的时候就排列起来了,这时候要用parseInt转换为数字型
     sum += parseInt($(domEle).text());
 })

(二)创建元素

创建元素

var li = $("<li>456</li>")

(三)添加元素

1.内部添加

element.append("内容")

把内容放入匹配元素内部最后面,类似原生的appendChild

2.外部添加

element.after("内容")   把内容放入目标元素的后面

element.before("内容")   把内容放在目标元素的前面

内部添加元素,生成之后,它们是父子关系;

外部添加元素,生成之后,它们是兄弟关系。

 (四)删除元素

element.remove()  删除匹配的元素(本身)

element.empty()    删除匹配的元素集合中所有的子节点

element.html("")     清空匹配的元素内容

十五、jQuery尺寸、位置操作

(一)尺寸

 以上参数为空,则获取相应值,返回的是数字型;

如果参数为数字,则是修改相应值;

参数可以不用写单位。

(二)位置操作

1.offset()设置或获取元素偏移

两个属性:left、top

语法:offset({top:10,left})

 // 1.获取设置距离文档的位置(偏移) offset
 console.log($(".son").offset());
 console.log($(".son").offset().left);
 $(".son").offset({
     top:200,
     left:200
 })

2.position() 获取距离带有定位父级位置(偏移)

// 2.position() 只能获取,不能设置
console.log($(".son").position());

十六、jQuery事件注册

(一)单个事件注册

element.事件(function(){})

$("div").click(function(){事件处理程序})

(二)事件处理on() 绑定事件

events:一个或多个用空格分隔的事件类型;

selector:元素的子元素选择器

fn:回调函数,即绑定在元素身上的监听函数

            //2.事件处理on
            $("div").on({
                mouseenter:function(){
                    $(this).css("background","skyblue")
                },
                click:function(){
                    $(this).css("background","pink")
                },
                mouseleave:function(){
                    $(this).css("background","yellow")
                }
            });
            $("div").on("mouseenter mouseleave",function(){
                $(this).toggleClass("current");
            })
            // on实现事件委派 click是绑定在ul上的,触发的是li
            $("ul").on("click","li",function(){

            });
            // on给动态元素绑定事件
            // $("ol li").click(function(){
            //     alert(111)
            // })
            $("ol").on("click","li",function(){
                alert(111)
            })
            var li = $("<li>456</li>")
            $("ol").append(li)

(三)事件处理off() 绑定事件

off()方法可以移除通过on()方法添加的事件处理程序

// 1.事件解绑 off
$("div").off(); // 解除了div所有的事件
$("div").off("click") // 解除了div的鼠标点击事件
$("ul").off("click","li");
// 2.one()  只触发一次
$("p").one("click",function(){
   alert(111)
})

(四)自动触发事件 trigger()

 // 1. 元素.事件()
 $("div").click();
 // 2.  元素.trigger("事件")
 $("div").trigger("click")
 // 2.  元素.triggerHandler("事件") 不会触发元素的默认行为
 $("div").triggerHandler("click");
 $("input").on("focus",function(){
    $(this).val("123")
 });
 $("input").triggerHandler("focus");

十七、jQuery事件对象

阻止默认行为:event.preventDefault() 或 return false

阻止冒泡:event.stopPropagation()

十八、jQuery插件

(一)常用网站

jQuery插件库:https://www.jq22.com/

jQuery之家:jQuery之家-自由分享jQuery、html5、css3的插件库

(二)使用步骤

1.引入相关文件

2.复制相关代码

十九、jQuery多库共存

问题概述:
jQuery使用$作为标示符,随着jQuery的流行其他js库也会用这$作为标识符,这样一起使用会引起冲突。
客观需求:

需要一个解决方案,让jQuery和其他的js库不存在冲突,可以同时存在,这就叫做多库共存。

jQuery解决方案:
1.把里面的$符号 统一改为jQuery,比如 jQuery(“div”)
2. jQuery变量规定新的名称:$.noConflict()    var xx = $.noConflictO;

$(function () {
   function $(ele) {
     return document.querySelector(ele)
   }
   console.log($("div"));
   // 如果$符号冲突 我们就用jQuery
   jQuery.each();
   // 2.让jQuery释放对$的控制权 让用户自己决定
   var suibian = jQuery.noConflict();
   console.log(suibian("span"));
   suibian.each()
 })

二十、jQuery对象拷贝

如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$extend()方法

语法:

$.extend([deep],target,object1[objectn])

1deep:如果设为true为深拷贝,默认为false浅拷贝
2.target要拷贝的目标对象
3.object1:待拷贝到第一个对象的对象。
4.objectN:待拷贝到第N个对象的对象。
5.浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象。
6.深拷贝,前面加true,完全克隆(拷贝的对象而不是地址),修改目标对象不会影响被拷贝对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值