JQuery 知识点总结

概念:

  • JavaScript库

    • 把一些浏览器兼容性,或者是一些常用的函数封装到一个js文件中,就是JavaScript库

    • 我们自己封装的animate.js,就是JavaScript库

常见的JavaScript库: jQuery、Prototype、MooTools

JQuery的优点

  • 强大的选择器

  • 链式编程

  • 隐式迭代

  • 丰富的插件,可以自己编写插件

  • 开源

JQ中的顶级对象

jQuery中的顶级对象是$或jQuery

  • 获取jQuery对象

  • 入口函数

注意:jQuery中的$和jQuery关键字本身为同一对象

JQ中的页面加载事件

使用jQuery的三个步骤:

  • 引入jQuery文件

  • 入口函数

  • 功能实现

关于jQuery的入口函数:

// 第一种写法
$(document).ready(function() {
});
// 第二种写法
$(function() {
});

jQuery入口函数与window.onload的对比(重要)

  • JavaScript的入口函数要等到DOM创建完毕,页面中所有资源(包括图片、文件)加载完成才开始执行。

  • jQuery的入口函数只会等待文档树加载完成就开始执行,并不会等待图片、文件的加载。

  • window.onload只能注册一次,jQuery入口函数可以注册多次

  • jQuery的入口函数,封装了DOM中的DOMContentLoaded事件(此事件DOM加载完毕之后就执行)

JQ对象和DOM对象

DOM对象

  • 用原生JavaScript获取的DOM对象

    • 通过document.getElementById() 返回的是元素(DOM对象)

  • 通过document.getElementsByTagName()获取到的是什么?

    • 伪数组(集合),集合中的每一个对象是DOM对象

JQ对象 ( DOM对象包含JQ对象)

jQuery对象又可以叫做包装集(包装的DOM对象的集合)

  • jQuery对象用$()的方式获取的对象

  • length属性,获取对象内部的DOM元素个数

JQ对象和DOM对象的区别

JQ对象不能调用DOM对象的属性和方法,同样DOM对象也不能调用JQ对象的属性和方法。

两者之间的转换

DOM对象转换成jQuery对象

$(DOM对象)

jQuery对象转换成DOM对象

jQuery对象[索引值]
jQuery对象.get(索引值)

$最常用的三种方法

  1. $('选择器') 返回jQuery对象

  2. $(DOM对象) 返回jQuery对象

  3. $(function() {}) 入口函数

选择器

基本选择器

名称用法描述
ID选择器$('#id')获取指定ID的元素
类选择器$('.class')获取同一类class的元素
标签选择器$('div')获取同一类标签的所有元素
并集选择器$('div,p,li')使用逗号分隔,只要符合条件之一就可。
交集选择器$('div.redClass')获取class为redClass的div元素

与css选择器用法一样

层级选择器

名称用法描述
子代选择器$('ul > li')使用>号,获取儿子层级的元素,注意,并不会获取孙子层级的元素
后代选择器$('ul li')使用空格,代表后代选择器,获取ul下的所有li元素,包括孙子等

过滤选择器

名称用法描述
:eq(index)$('li:eq(2)').css('color', 'red')获取到的li元素中,选择索引号为2的元素,索引号index从0开始。equal
:odd$('li:odd').css('color', 'red')获取到的li元素中,选择索引号为奇数的元素
:even$('li:even').css('color', 'red')获取到的li元素中,选择索引号为偶数的元素

筛选选择器

名称用法描述
children(selector)$('ul').children('li')相当于$('ull > i'),子类选择器
find(selector)$('ul').find('li')相当于$('ul li'),后代选择器
siblings(selector)$('#first').siblings('li')查找兄弟节点,不包括自己本身。
parent()$('#first').parent()查找父亲
eq(index)$$('li').eq(2)相当于 $$('li:eq(2)'),index从0开始
next()$('li').next()找下一个兄弟
prev()$('li').prev()找上一次兄弟

JQ样式操作

CSS操作

操作单个样式

// name:需要设置的样式名称
// value:对应的样式值
$obj.css(name, value);
// 使用案例
$('#one').css('background','gray');// 将背景色修改为灰色

操作多个样式

// 参数是一个对象,对象中包含了需要设置的样式名和样式值
$obj.css(obj);
// 使用案例
$('#one').css({
    'background-color':'gray',
    'width':400,
    'height':400
});

获取样式

// name:需要获取的样式名称
$obj.css(name);
// 案例
$('div').css('background-color');

注意:获取操作的时候,如果是多个元素,那么只会返回第一个元素的值。

隐式迭代:

  1. 设置操作的时候,如果是多个元素,那么给所有的元素设置相同的值

Class操作

添加样式类

// name:需要添 加的样式类名,注意参数不要带点.
$obj.addClass(name);
// 例子,给所有的div添加one的样式。
$('div').addClass('one');

移除样式类

// name:需要移除的样式类名
$obj.removeClass('name');
// 例子,移除div中one的样式类名
$('div').removeClass('one');

判断是否有某个样式类

// name:用于判断的样式类名,返回值为true false
$obj.hasClass(name)
// 例子,判断第一个div是否有one的样式类
$('div').hasClass('one');

切换样式类

// name:需要切换的样式类名,如果有,移除该样式,如果没有,添加该样式。
$obj.toggleClass(name);
// 例子
$('div').toggleClass('one');

JQuery操作属性

元素固有属性prop()

checked、selected、disabled这类boolean类型的属性来说,不能用attr方法,只能用prop方法。这些称为元素固有属性。

// 设置属性
$(':checked').prop('checked', true);
// 获取属性
$(':checked').prop('checked');// 返回true或者false

元素自定义属性值 attr()

 //设置单个属性 
$obj.attr(name, value);  
$('img').attr('title','哎哟,不错哦');
 //设置多个属性 
$obj.attr(obj)
$('img').attr({
    title:'哎哟,不错哦',
    alt:'哎哟,不错哦',
    style:'opacity:.5'
});
 //获取属性
$obj.attr(name)
 //移除属性
$obj.removeAttr(name);
$('img').removeAttr('title');

val()、text()、html()

$obj.val()        获取或者设置表单元素的value属性的值
$obj.html()     对应innerHTML
$obj.text()        对应innerText/textContent,处理了浏览器的兼容性

JQ动画

三组基本动画

  • 显示(show)与隐藏(hide)是一组动画toggle:

  • 滑入(slideUp)与滑出(slideDown)与切换(slideToggle),效果与卷帘门类似

  • 淡入(fadeIn)与淡出(fadeOut)与切换(fadeToggle)

$obj.show([speed], [callback]);
// speed(可选):动画的执行时间
     // 1.如果不传,就没有动画效果。如果是slide和fade系列,会默认为normal
     // 2.毫秒值(比如1000),动画在1000毫秒执行完成(推荐)
     // 3.固定字符串,slow(600)、normal(400)、fast(200),如果传其他字符串,则默认为normal。
// callback(可选):执行完动画后执行的回调函数
​
slideDown()/slideUp()/slideToggle();同理
fadeIn()/fadeOut()/fadeToggle();同理

自定义动画

$(selector).animate({params},[speed],[easing],[callback]);
// {params}:要执行动画的CSS属性,带数字(必选)
// speed:执行动画时长(可选),默认400
// easing:执行效果,默认为swing(缓动)慢快慢  可以是linear(匀速)
// callback:动画执行完后立即执行的回调函数(可选)

动画队列与停止动画

在同一个元素上执行多个动画,那么对于这个动画来说,后面的动画会被放到动画队列中,等前面的动画执行完成了才会执行

解决方法:在每一次动画执行前添加一个stop()属性,让其停止队列,并清除之前的动画效果。

链式编程

  • 通常情况下,只有设置操作才能把链式编程延续下去。因为获取操作的时候,会返回获取到的相应的值,无法返回 jQuery对象。

 $("#dv").html("<p>这是一个p</p>");
 $("#dv").css("backgroundColor","red");
​
//链式写法
 $("#dv").html("<p>这是一个p</p>").css("backgroundColor","red");

JQuery节点操作

创建节点

$('<span>这是一个span元素</span>');

添加节点

append  appendTo        在被选元素的结尾插入内容
prepend prependTo       在被选元素的开头插入内容
before                  在被选元素之后插入内容
after                   在被选元素之前插入内容

清空节点与删除节点

  • empty:清空指定节点的所有元素,自身保留(清理门户)

$('div').empty(); // 清空div的所有内容(推荐使用,会清除子元素上绑定的内容,源码)
$('div').html('');// 使用html方法来清空元素。
  • remove:相比于empty,自身也删除(自杀)

$('div').remove();

克隆节点

复制匹配元素

// 复制$(selector)所匹配到的元素(深度复制)
// cloneNode(true)
// 返回值为复制的新元素,和原来的元素没有任何关系了。即修改新元素,不会影响到原来的元素。
$(selector).clone();

JQuery尺寸和位置操作

width方法和height方法

设置或者获取高度,不包括内边距、边框和外边距

// 带参数表示设置高度
$('img').height(200);
// 不带参数获取高度
$('img').height();

获取网页的可视区宽高

// 窗口大小发生变化的事件
window.onresize = function () {};
// 获取可视区宽度
$(window).width();
// 获取可视区高度
$(window).height();

innerWidth\innerHeight\outerWidth\outerHeight

innerWidth()/innerHeight()    方法返回元素的宽度/高度(包括内边距)。
outerWidth()/outerHeight()  方法返回元素的宽度/高度(包括内边距和边框)。
outerWidth(true)/outerHeight(true)  方法返回元素的宽度/高度(包括内边距、边框和外边距)。

scrollTop \ scrollLeft

  • 设置或者获取垂直滚动条的位置

// 当页面滚动的时候 - 事件
// window.onscroll 
​
// 获取页面被卷曲的高度
$(window).scrollTop();
// 获取页面被卷曲的宽度
$(window).scrollLeft();
​
// 设置滚动动画
$('body,html').animate({
    scrollTop: 0
}, 100)

offset方法与position方法

  • offset方法获取元素距离document的位置,position方法获取的是元素距离有定位的父元素(offsetParent)的位置。

// 获取或设置元素距离document的位置,返回值为对象:{left:100, top:100}
$(selector).offset();
// 获取相对于其最近的有定位的父元素的位置。
$(selector).position();

on注册事件(重要)

优势:

1、可以绑定多个事件,多个事件处理程序

            $("div").on({
                 mouseenter: function() {
                    $(this).css("background", "skyblue");
                 },
                 click: function() {
                     $(this).css("background", "purple");
                 }
             });

若事件处理程序相同

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

2、 on可以实现事件委托(委派)

click 是绑定在ul 身上的,但是 触发的对象是 ul 里面的小li
             $("ul li").click();
            $("ul").on("click", "li", function() {
                alert(11);
            });

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

$("ol").on("click", "li", function() {
                alert(11);
            })
            var li = $("<li>我是后来创建的</li>");
            $("ol").append(li);

事件处理 off() 解绑事件

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

 $("div").off("click"); // 这个是解除了div身上的点击事件
            $("ul").off("click", "li");
            // 2. one() 但是它只能触发事件一次
            $("p").one("click", function() {
                alert(11);
            })

事件处理 trigger() 自动触发事件

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

Hover

$(selector).hover(fnEnter, fnLeave);
// 下面的简写形式
$(selector).mouseenter(function () {
}).mouseleave(function () {
})

jQuery 事件对象

jQuery 对DOM中的事件对象 event 进行了封装,兼容性更好,获取更方便,使用变化不大。事件被触发,就会有事件对象的产生。

element.on(evenets,[selector],function{event}{})

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

停止冒泡:event.stopPropagation()

each遍历方法

  • jQuery的隐式迭代会对所有的DOM对象设置相同的值,但是如果我们需要给每一个对象设置不同的值的时候,就需要自己进行迭代了。

作用:遍历jQuery对象集合,为每个匹配的元素执行一个函数

// 参数一表示当前元素在所有匹配元素中的索引号
// 参数二表示当前元素(DOM对象)
$(selector).each(function(index,element){});

JSON数据

是一种轻量级的数据交换格式,主要用于数据 存储 交换

数据在存储时,只会存储字符串格式,在接收数据时,需要再次转换为数组、对象的格式

对象、数组转为字符串:

JSON.stringify(obj)

字符串转为对象、数组

JSON.stringify(arr);

JQuery常用插件

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

jQuery 插件使用步骤(比猫画虎):

1)引入相关文件。(jQuery 文件 和 插件文件)

2)复制相关html、css、js (调用插件)。

瀑布流插件

兼容IE8的响应式网格瀑布流布局jQuery插件_jQuery之家-自由分享jQuery、html5、css3的插件库

图片懒加载插件

EasyLazyload.js 超好用js图片延迟加载

bootstrap插件

bootstrap官网进行下载操作

全屏滚动插件

jQuery全屏滚动插件fullPage.js演示_dowebok

知识点补充

1、原生DOM没有对象拷贝 ,可以采用JSON相互转换的方法,可以得到一个一样的新对象。

2、jq的对象克隆

 $.extend(true, targetObj, obj);

解决多库共存

1、将里面的$符号改为jQuery。

jQuery('div')  //jquery和$都是JQ中的顶级对象

2、自己定义

var xx = $.noConflict();

3、noConflict()是释放对$的使用,让出来

(function(形参){
})(实参)
实际应用
//var xx = $.noConflict();  $.noConflict()与$指向的时同一个对象
(function($){
    console.log($)
})($.noConflict())
这种方法可以让所有插件都使用$符号 ,因为此时是将$.noConflict()这个对象传参给$,此时$是一个变量,但是只能在此函数内使用,外面使用时,$为undefined  

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值