开发中常用jQuery知识点总结

jQuery理解

jQuery就是一个js库,使用jQuery的话,会比使用JavaScript更简单。jQuery解决了浏览器的兼容性问题,当你学会这些知识点后,使用jQuery操作DOM会更加的简单、便捷。

案例地址: https://github.com/pengjunshan/WebPJS/Jquery

其它Web文章
HtmlCss基础学习第一章
CSS基础学习第二章
CSS浮动的使用和解决浮动的五种方法
CSS定位relative、absolute、fixed使用总结
原生开发WebApi知识点总结
C3动画+H5+Flex布局使用总结
ES6常用知识总结
Vue学习知识总结
开发环境到生产环境配置webpack
待续......

本编文章会讲到的知识点
  • JavaScript和jQuery对比
  • jQuery选择器
  • jQuery操作样式
  • jQuery操作属性
  • jQuery动画
  • jQuery操作DOM节点
  • jQuery操作其它属性
  • jQuery事件机制
  • jQuery对象与DOM对象之间的转换
  • 其它知识点

为什么用jQuery?

js缺点.png

JavaScript和jQuery对比

1.不同处对比

不同处 JavaScript jQuery
入口函数 只能有一个,如果有多个,后面的会覆盖前面 可以有多个,并且不会发生覆盖的情况
代码容错性 代码容错性差,代码出现错误,会影响到后面代码的运行。 代码容错性好,屏蔽错误,并且不会影响后面代码的运行。
浏览器兼容性 兼容性差,比如火狐不支持innerText 对浏览器兼容性做了封装,因此不存在兼容性问题
操作复杂性 DOM操作复杂,对于一些简单的动画效果,实现起来比较麻烦 DOM操作简单,支持隐式迭代,实现动画非常简单。

2.怎样使用jQuery?

官网下载地址:http://jquery.com/download/
jquery大版本分为1.x和2.x和3.x
区别:2.x3.x版本不再支持IE6/7/8,在中国,用的最多的还是1.x版本
jQuery3是jQuery的未来,如果你需要兼容IE6-8,你可以继续使用1.12版本。

  1. 引包(引入jQuery文件)

  1. 入口函数
//原生JS的入口函数
window.onload = function(){
}
//JQ方式一
$(function(){
}
//JQ方式二
$(document).ready(function () {
});
  1. 功能实现
$("#btnShowDiv").click(function () {
    $("div").show(1000);
});

3.对比JavaScript的入口函数jQuery的入口函数,执行时机

  • JavaScript的入口函数要等到页面中所有资源(包括图片、文件)加载完成才开始执行。
  • 2.jQuery的入口函数只会等待文档树加载完成就开始执行,并不会等待图片、文件的加载。

4.了解jQuery的$符号

其实$就是一个函数:$();参数不一样,功能不一样!
$常用的几种情况:
$(function() {});//参数是function,说明是入口函数
$(“#btnSetConent”);//参数是字符串,并且以#开头,是一个标签选择,查找id=“btnSetContent”的元素
$(“div”);//查找所有的div元素
$(document).ready(funciton(){})//将document转换成jQuery对象

$ === jQuery,也就是说能用$的地方,完全可以用jQuery,$仅仅是简写形式。
jQuery选择器

1.jQuery选择器概述

  • jQuery选择器是jQuery为我们提供的一组方法,让我们更加方便的获取到页面中的元素。注意:jQuery选择器返回的是jQuery对象。
  • jQuery选择器有很多,基本兼容了CSS1到CSS3所有的选择器,并且jQuery还添加了很多更加复杂的选择器。【查看jQuery文档】
  • jQuery选择器虽然很多,但是选择器之间可以相互替代,就是说获取一个元素,你会有很多种方法获取到。所以我们平时真正能用到的只是少数的最常用的选择器。

2.基本选择器

跟css的选择器用法一模一样。

名称 用法 描述
ID选择器 $(“#id”); 获取指定ID的元素
类选择器 $(“.class”); 获取同一类class的元素
标签选择器 $(“div”); 获取同一类标签的所有元素
并集选择器 $(“div,p,li”); 使用逗号分隔,只要符合条件之一就可。获取所有的div、p、li元素
交集选择器 $(“div.redClass”); 注意选择器1和选择器2之间没有空格,class为redClass的div元素,注意区分后代选择器。

3.层级选择器

跟css的选择器用法一模一样。

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

4.过滤选择器

这类选择器都带冒号:

名称 用法 描述
:eq(index) $(“li:eq(2)”).css(“color”, ”red”); 获取到的li元素中,选择索引号为2的元素,索引号index从0开始。
:odd $(“li:odd”).css(“color”, ”red”); 获取到的li元素中,选择索引号为奇数的元素
:even $(“li:even”).css(“color”, ”red”); 获取到的li元素中,选择索引号为偶数的元素
:checked $(' input:checked'); 获取所有input元素中,勾选的元素
:button $("input:button") 所有 type="button" 的 元素
:selected $("option:selected") 所有option选中的元素

5.筛选选择器(方法)

筛选选择器的功能与过滤选择器有点类似,但是用法不一样,筛选选择器主要是方法。

名称 用法 描述
children(selector) $(“ul”).children(“li”) 相当于$(“ul>li”),子类选择器
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() 找上一次兄弟

6.其它常用选择器

名称 用法 描述
[type=value] $("input[type=button]") 找type是button类型的input元素
"*" $(".box *") box对象下所有的元素
:gt(3) $("ul li:gt(3)") 列出 index 大于 3 的元素
:lt(3) $("ul li:lt(3)") 列出 index 小于 3 的元素

7.案例

用了上面所有的选择器类型,案例请到https://github.com/pengjunshan/WebPJS中查看





    
    
    
    选择器
    



    
  • 喜羊羊
  • 懒羊羊
  • 沸羊羊
  • 慢羊羊
  • 灰太狼
  • 红太狼
灰太狼
爸爸
儿子
孙子

ppp

jQuery操作样式

1.css操作

设置或者修改样式,操作的是style属性。

  • 设置单个样式

css(name, value);name:需要设置的样式名称 value:对应的样式值

 $(".box").css("background-color", "red");
  • 设置多个样式

css(obj);参数是一个对象,对象中包含了需要设置的样式名和样式值

 $(".box").css({
            "background-color": "gray",
            "width": "200px",
            "height": "200px"
        })
  • 获取样式

$(".box").css(name); name是样式的名称

let width = $(".box").css("width")
console.log(width)
  • 注意
    1.设置操作的时候,如果是多个元素,那么给所有的元素设置相同的值
    2.获取操作的时候,如果是多个元素,那么只会返回第一个元素的值。

2.class操作

  • 添加样式类

addClass(name); name:需要添加的样式类名,注意参数不要带点.

  $(".dd").addClass("pp")
  • 移除样式类

removeClass(name); name:需要移除的样式类名

 $(".dd").removeClass("pp")
  • 判断是否有样式类

hasClass(name); name:用于判断的样式类名,返回值为true false

console.log($(".dd").hasClass("pp"))
  • 切换样式类

toggleClass(name); name:需要切换的样式类名,如果有,移除该样式,如果没有,添加该样式。

 $(".dd").toggleClass("pp")

3.案例

切换tab栏,案例请到https://github.com/pengjunshan/WebPJS中查看

切换tab栏案例



    
    
    
    Document
    
    


    
  • 国际大牌
  • 国妆名牌
  • 清洁用品
  • 男士精品
jQuery操作属性

1.attr操作

  • 设置单个属性

$().attr(name, value); name:需要设置的属性名,value:对应的属性值

$box.attr("name","名字");
  • 设置多个属性

$().attr(obj); 参数是一个对象,包含了需要设置的属性名和属性值

 $box.attr({
           "title":"头",
           "aa":"111"
       })
  • 获取属性

attr(name); name传需要获取的属性名称,返回对应的属性值

 console.log($box.attr("name"))
  • 移除属性

removeAttr(name); name需要移除的属性名,如果传空,那么不会有任何操作
注意,并不是移除所有的属性。区分removeClass。

 $box.removeAttr("aa")
  • 注意
    1.设置属性时,如果是多个元素,给所有的元素设置相同的属性
    2.获取属性时,只会获取到第一个元素对应的属性,与css方法一样
    3.获取属性时,如果该属性不存在,那么会返回undefined

  • 案例

美女相册,代码中详细注释,案例请到https://github.com/pengjunshan/WebPJS中查看

attr案例



    
    
    
    Document
    
    



    

美女画廊

选择一个图片

2.prop操作

在jQuery1.6之后,对于checked、selected、disabled这类boolean类型的属性来说,不能用attr方法,只能用prop方法。

  • 设置属性

prop(name,value); name:boolean类型属性,value:布尔值

$input.prop("checked",true)
  • 获取属性

prop(name); name:boolean类型属性

 console.log($input.prop("checked"))
  • 案例

全选、反选,代码中详细注释,案例请到https://github.com/pengjunshan/WebPJS中查看

全选反选案例




    
    
    
    Document
    
    



    
菜名 饭店
红烧肉 田老师
西红柿鸡蛋 田老师
红烧狮子头 田老师
日式肥牛 田老师
jQuery动画

1.显示(show) 与隐藏(hide)

show(speed,callback); speed:动画时长单位毫秒(可传可不传),callback:动画执行完后回调(可传可不传);
show(); 如果不传递参数 直接显示和隐藏 没有动画;
stop(); 此方法是停止动画执行,用途:当手速比较快时,同一个动画会执行多次;
show/hide:修改的是元素的width、height、opacity。

      $(".input1").click(function(){
            //判断当前是隐藏还是显示
            if($(this).val() === "显示"){
                $(this).val("隐藏")
                $(".box1").stop().show(1000,function(){
                    console.log("显示了")
                })

            }else{
                $(this).val("显示")
                $(".box1").stop().hide(1000,function(){
                    console.log("隐藏了")
                })
            }
        })

2.滑入(slideUp)与滑出(slideDown)

slideUp(speed, callback); speed:动画时长单位毫秒(可传可不传),callback:动画执行完后回调(可传可不传)
slideUp(); 如果不传参数,speed默认是400;
stop(); 此方法是停止动画执行,用途:当手速比较快时,同一个动画会执行多次;
slideToggle(speed,callback); 如果是隐藏状态,那么执行slideDown操作,如果是显示状态,那么执行slideUp操作。
slideUp/slideDown:修改的是元素的height;

        $(".input2").click(function(){
            //方式一:slideToggle()
            $(".box2").stop().slideToggle();
            //方式二:判断当前是隐藏还是显示
            if($(this).val() === "显示"){
                $(this).val("隐藏")
                $(".box2").stop().slideDown(400,function(){
                    console.log("显示了")
                })
            }else{
                $(this).val("显示")
                $(".box2").stop().slideUp(400,function(){
                    console.log("隐藏了")
                })
            }
        })

3.淡入(fadeIn)与淡出(fadeOut)

fadeIn(speed, callback); speed:动画时长单位毫秒(可传可不传),callback:动画执行完后回调(可传可不传);
fadeIn(); 如果不传参数,speed默认是400;
fadeToggle(speed, callback); 如果当前元素处于隐藏状态,那么执行fadeIn操作,如果处于显示状态,那么执行fadeOut操作;
fade系列方法:修改的是元素的opacity;

         $(".input3").click(function(){
            //方式一: fadeToggle()
            $(".box3").stop().fadeToggle();
            //方式二: 判断当前是隐藏还是显示
            if($(this).val() === "显示"){
                $(this).val("隐藏")
                $(".box3").stop().fadeIn(400,function(){
                    console.log("显示了")
                })
            }else{
                $(this).val("显示")
                $(".box3").stop().fadeOut(400,function(){
                    console.log("隐藏了")
                })
            }
        })

4.自定义动画

$(selector).animate({params},speed,easing,callback);
1.{params}:要执行动画的CSS属性,带数字(必选)
2.speed:执行动画时长(可选)
3.easing:执行速度(可选) “swing”:在开头和结尾移动慢,在中间移动速度快 “linear”:匀速移动
4.callback:动画执行完后立即执行的回调函数(可选)

       $(".input4").click(function () {
            $(".box4").animate({
                left: 400,
                width: 400,
                height: 400,
            },3000,"swing",function(){
                console.log("执行完毕")
            })
        })

5.案例

下拉菜单案例、钢琴版导航条、手风琴案例,代码中详细注释,案例请到https://github.com/pengjunshan/WebPJS中查看

动画案例




    
    
    
    Document
    
    




    
    

    
    

    
    
jQuery操作DOM节点

1.创建元素

$(htmlStr); htmlStr:html格式的字符串

 var $s = $("这是一个span元素");
 console.log($s)

2.添加元素

$(father).append(sonHtml); father:添加到father标签中 sonHtml:要添加的元素html字符串;
append()方法是添加到父级的最后面
prepend()方法是添加到父级的最前面

 $(".box").append("我到最前面");
 $(".box").prepend("我到最后面");

son.appendTo($(father)); 子元素添加到父元素中;
appendTo和prependTo方法和append方法和prepend的作用是一模一样的,只不过是调用的对象颠倒了而已;

 var p = $('

我是一个p

'); var p1 = $('

我是二个p

'); p.prependTo($(".box")) p1.appendTo($(".box"))

before方法是在当前元素的前面添加 (与当前元素是兄弟关系);
after方法是在当前元素的后面添加 (与当前元素是兄弟关系);

 var p2 = $('

我是三个p

'); var p3 = $('

我是四个p

'); $(".box").before(p2) $(".box").after(p3)

3.清空元素

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

 $(".xm").empty();

4.删除元素

remove():相比于empty(),自身也删除(自杀)

 $(".xm").remove();

5.克隆元素

clone(true); 参数:布尔值 不管是false还是true 都是深拷贝;
false 不会复制元素身上的事件; true 会复制元素身上的事件;
返回值为复制的新元素,和原来的元素没有任何关系了。即修改新元素,不会影响到原来的元素。

let $new = $(".box>p").clone()
$(".box").append($new)
jQuery操作其它属性

1.val()方法

val();方法用于设置和获取表单元素的值,例如input、select、textarea的值

 $(".in").val("吃烩面")
 console.log($(".in").val())

2.html()方法

html(htmlStr)方法可以识别标签; htmlStr:标签字符串

 $(".box").html("

我是Html

")

3.text()方法

text(htmlStr)方法不可以识别标签; htmlStr:字符串

$(".box").text("

我是Html

")

4.height()、width()

height(number)设置或者获取高度, number:可传可不传;
width(number)设置获取获取宽度, number:可传可不传;
返回值是number类型(比如200),对比$(“img”).css(“width”)返回的是字符串(比如200px);

$(".box").height(200)
console.log($(".box").height())
$(".box").width(200)
console.log($(".box").width())

5.scrollTop() scrollLeft()

scrollTop(number);传参设置垂直滚动条的位置,不传承获取垂直滚动条的位置;
scrollLeft(number);传参设置水平滚动条的位置,不传参获取水平滚动条的位置;
mumber:参数为数值类型

 $(window).scrollTop(700);
 console.log($(window).scrollTop())
$(window).scrollLeft(300)
console.log($(window).scrollLeft())

案例

本案例主要是用了jquery操作DOM节点和其它属性方法知识点,代码中详细注释,案例请到https://github.com/pengjunshan/WebPJS中查看

jquery操作dom节点




    
    
    
    Document
    
    



    
    

城市选择:

吐槽:

jQuery事件机制

jQuery对JavaScript事件进行了封装,增加并扩展了事件处理机制。jQuery不仅提供了更加优雅的事件处理语法,而且极大的增强了事件的处理能力。

1.jQuery事件的发展历程

简单事件绑定>>bind事件绑定>>delegate事件绑定>>on事件绑定

2.on事件绑定

$("input").eq(0).on("click",function) 传统事件绑定;
参数 1、事件类型 参数 2、回调函数;
下面点击按钮动态生成span元素

   $("input").eq(0).on("click",function(){
            let s = $("我会span")
            s.css("color","red")
            s.appendTo($box)
        })

$box.on("click","span",function)委托事件绑定;
1、事件类型 参数 2、选择器 参数 3、回调函数;
box是父级元素,通过代理的方式给动态生成的sapn添加事件

    $(".box").on("click","span",function(){
            console.log("我是委托事件绑定")
        })

3.jQuery事件对象()

对象属性 解释
event.type 事件类型
event.data 存储绑定事件时传递的附加数据
event.target 点了谁就是谁
event.currentTarget 等同于this,将来调用这个事件的对象
event.delegateTarget 代理对象
screenX和screenY 对应屏幕最左上角的值
offsetX和offsetY 点击的位置距离元素的左上角的位置
clientX和clientY 距离页面左上角的位置(忽视滚动条)
pageX和pageY 距离页面最顶部的左上角的位置(会计算滚动条的距离)
event.witch 鼠标按键类型,1=鼠标左键 2=鼠标中键 3=鼠标右键
event.keyCode 按下的键盘代码
event.stopPropagation() 阻止事件冒泡行为
event.preventDefault() 阻止浏览器默认行为
return false; 既阻止冒泡,又阻止了默认行为
jQuery对象与DOM对象之间的转换
  • 什么是DOM对象(js对象)?
    1.使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象。
    2.dom对象只可以使用dom对象的方法和属性。
    3.但凡是利用document.get...取出来的都是DOM对象
  • 什么是jquery对象?
    1.jquery对象就是使用jquery的方法获取页面中的元素返回的对象就是jQuery对象。
    2.jquery对象只能使用jquery对象的方法。
    3.但凡是用$()符号获取出来都是JQ对象
  • 深入了解jQuery对象
    jQuery对象其实就是DOM对象的包装集(包装了DOM对象的集合(伪数组))

1.jquery对象转DOM对象

        /**
        *jQuery对象转DOM对象
        */
        let $pp = $("#pp");
        console.log($pp)
        //第一种方式
        let pp1 = $pp[0];
        console.log(pp1)
        //第二种方式
        let pp2 = $pp.get(0);
        console.log(pp2)

        //text()方法是jQuery对象的方法 DOM对象用不了
        $pp.text("木问题啊");//赋值成功
        pp2.text("木问题啊。。。。")//赋值失败

2.DOM对象转jQuery对象

       /**
        *   DOM对象转jQuery对象
        */
        let dd = document.getElementById("dd");
        console.log(dd)
        let $dd = $(dd);
        console.log($dd)

        //innerHTML是DOM对象的属性 jQuery对象用不了
        dd.innerHTML = '你好呀!!';//赋值成功
    $dd.innerHTML = '你好呀';//赋值失败
其它知识点
  • index()方法注意细节

index() 获取的是当前元素在兄弟中的排名而不是在JQ集合中的排名

你可能感兴趣的:(开发中常用jQuery知识点总结)