欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jQuery基础、常用知识点总结(上)

程序员文章站 2022-06-16 10:05:06
...

建议在有js基础上看以下内容

一、jquery概述

1. 定义

jQuery是一个快速、简洁的JavaScript库,封装了JavaScript常用的功能代码,优化了DOM操作、事件处理、动画设计和Ajax交互。

2. 优点

①轻量级。核心文件才几十kb,不会影响页面的加载速度。
②跨越浏览器兼容。基本兼容了目前的主流的浏览器
③链式编程、隐式迭代。简化了代码量
④对事件、样式、动画的支持,大大简化DOM操作
⑤支持插件扩展开发。有这丰富第三方的插件,例如:树形菜单、日期控件、轮播图等
⑥免费、开源

3. 版本及使用步骤

目前3X版本是官方主要更新维护的版本,不兼容IE678
使用步骤:下载、引入jQuery文件,即可使用

4. jQuery的入口函数

	①$(function(){
 			...			//此处是页面DOM加载完成的入口
 		});
 	②$(document).ready(function(){
 			...			//此处是页面DOM加载完成的入口
 		});

常用第一种方式

使用入口函数,等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完,相当于原生js中的DOMContentLoaded,有了入口函数就能把js代码写到结构之前了

5. jQuery*对象 $

(1)在代码中 $ 是jQuery的别称,可以相互替换
(2)$ 是jQuery的*对象,相当于原生js中的window,把DOM元素利用 $ 包装成jQuery对象,就能调用jQuery的方法
(3)jQuery对象和DOM对象的区别:
①利用元素js获取过来的对象为DOM对象
②利用jQuery方法获取的就是jQuery对象,其本质是利用$把DOM对象包装成jQuery对象(以伪数组的形式存储)
③jQuery对象只能使用jQuery的属性和方法,DOM对象只能使用原生js的属性和方法
(4)DOM对象与jQuery对象之间的转换
①DOM对象转jQuery对象

$("div") //$("DOM对象")

②jQuery对象转DOM对象(两种方法)

$("div")[index]//index为索引号
$("div").get(index)

二、jQuery常用的API

1. 获取元素

1.1jQuery基础选择器

$(“选择器”) //里面选择器直接写css选择器即可,但要加引号

名称 用法
id选择器(获取指定id的元素) $("#id")
全选选择器(匹配所有元素) $("*")
类选择器(获取同一类class元素) $(".class")
标签选择器(获取同一类标签所有元素) $(“div”)
交集选择器(获取交集元素) $(“li.current”)
并集选择器(获取多个元素) $(“div,p,li”)

补充:
$(this)不加引号,表示当前元素

1.2jQuery层级选择器

  • 子代选择器
    $(“ul>li”) //获取亲子级元素
  • 后代选择器
    $(“ul li”) //所有后代元素

1.3隐式迭代(※)
遍历内部元素(伪数组形式存储)的过程,即 给匹配到的元素进行内部循环遍历,执行相应的方法,而不用再自己进行遍历

	<div>哈哈</div>
    <div>哈哈</div>
    <div>哈哈</div>
    <div>哈哈</div>
    <ul>
        <li>相同的操作</li>
        <li>相同的操作</li>
        <li>相同的操作</li>
    </ul>
    <script>
        //1.获取4个div元素
        console.log($("div"));
        //2.给四个div设置背景颜色 jquery对象不能使用style
        $("div").css('background','pink');
        //3.隐式迭代就是把匹配到的所有元素内部进行遍历循环,给每一个元素添加css这个方法
        //前提是做相同的操作
        $("ul li").css("color","red");
    </script>

1.4jQuery筛选选择器

语法 用法
:first (第一个元素) $(“li:first”)
:last(最后一个元素) $(“li:last”)
:eq(index) (对应索引号的元素) $(“li:eq(2)”)
:odd (索引号为奇数) $(“li:odd”)
:even(索引号为偶数) $(“li:even”)

补充:
针对复选框的一个筛选选择器
:checked 查找被选中的表单元素

1.5jQuery筛选方法

语法 用法
.parent() (查找父级) $(“li”).parent()
.children(selector) (亲子级,类似子代选择器) $(“ul”).children(“li”)
.find(selector)(后代选择器) $(“ul”).find(“li”)
.siblings(selector)(兄弟选择器) $(".first").siblings(“li”)
.eq(index) (索引号为index的元素) $(“li”).eq(2)

补充: 得到当前元素的索引号:
① $ (this).index()
必须是同一组元素,关系为兄弟关系
② $.each()遍历(后面介绍)

补充:
筛选祖父级元素 parents(“选择器”)

1.6jQuery排他思想
给当前元素设置样式,其余兄弟元素清除样式

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

2.3.重复了$(this),可利用链式编程,简化代码

1.7链式编程
作用:简化代码量
1.6的2\3合并为

$(this).css("backgroundColor","red").siblings().css("backgroundColor","");

2. jQuery样式操作

2.1操作css方法
用css()来修改简单元素样式,或操作类,修改多个样式
①参数只写属性名,为返回属性值(带单位)

$(this).css("color")

②参数是(“属性名”,“属性值”)是设置一组样式,属性值为数字可不带单位和引号

$(this).css("color","red")
$(this).css("width",100)

③参数是对象形式,分布设置多个样式,属性可不加引号,各样式逗号隔开

$(this).css({
	color:"red",
	width:100
});

补充:复合属性,名字要驼峰命名
比如:backgroundColor:“red”

2.2设置类样式方法
类似于原生js中的classList,可以操作类样式且不覆盖原来的类名
①添加类addClass()
②移除类removeClass()
③切换类toggleClass()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div {
            width: 150px;
            height: 150px;
            background-color: pink;
            margin: 100px auto;
            transition: all 0.5s;
        }

        .current {
            background-color: red;
            transform: rotate(360deg);
        }
    </style>
    <script src="../jquery.min.js"></script>
</head>
<body>
    <div class="current"></div>
    <script>
        //1.添加类addClass()
        $("div").click(function () {
           $(this).addClass("current");
      	})

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

        //3.切换类toggleClass
        $("div").click(function () {
            $(this).toggleClass("current");
        })
    </script>
</body>
</html>

3.jQuery效果

jquery封装了一些常见的动画效果,包括显示与隐藏、滑动、淡入与淡出、自定义动画

3.1显示隐藏效果
①显示show([s,[e],[fn]])
②隐藏hide([s,[e],[fn]])
③切换toggle([s,[e],[fn]])

参数(可不写):
s:为速度(“slow”,“normal”,“fast”)或者可写毫秒数(如:1000);
e:用来指定切换效果,默认“swing”(慢-快-慢),还有“linear”(匀速)
fn:回调函数,在动画完成时执行的函数

3.2滑动效果
①向上滑动slideUp([s,[e],[fn]])
②向下滑动slideDown([s,[e],[fn]])
③切换slideToggle([s,[e],[fn]])

3.3事件切换
hover([over,]out)
over:鼠标经过时触发
out:鼠标离开时触发
①hover(over,out)是鼠标经过和离开的复合写法
②hover(只有一个参数)那么就是鼠标经过和离开都会触发这个函数

3.4动画队列以及停止排队方法
①动画或效果队列
动画或者效果一旦触发就会执行,如果多次触发,就会造成多个动画或效果排队执行。(触发了就一定要执行完,会造成动画混乱)

②停止排队 stop()
用于停止动画效果,注意,stop()要写到动画或效果之前,表示停止上一次的动画。

<script>
        $(function () {
        	 //鼠标经过
        	$(".nav>li").mouseover(function () {
         		$(this).children('ul').slideDown(500);
         	})
       		 //鼠标离开
        	$(".nav>li").mouseout(function () {
	            $(this).children('ul').slideUp();
            })
            //1.事件切换 hover  就是鼠标经过和离开的复合写法
            $(".nav>li").hover(function () {
                 $(this).children('ul').slideDown(500);
            },function () {
                 $(this).children('ul').slideUp();
             });
            //2.事件切换 hover 如果只有一个函数 ,那么就是鼠标经过和离开都会触发这个函数
            $(".nav>li").hover(function () {
                //stop方法必须写在动画前面               $(this).children('ul').stop().slideToggle();//Toggle切换
            })

        })
    </script>

3.5淡出淡入效果
①淡入fadeIn([s,[e],[fn]])
②淡出fadeOut([s,[e],[fn]])
③切换fadeToggle([s,[e],[fn]])
④渐进方法调整到指定的不透明度

fadeTo([s,opacity,[e],[fn]])
参数opacity必须写,范围为0~1
参数s必须写

3.6自定义动画
animate(params,[s],[e],[fn])
参数params:想要修改的样式属性,以对象形式传递,必须写;其余参数可省略

$("div").animate({
	color:"red",
	width:100
});

补充:
$(document).animate(),这种写法是错的,animate()只能一般元素操作

4.jQuery属性操作

4.1设置或获取元素固有属性 prop()
固有属性:元素本身就自带的属性,比如a的href等

①获取属性
prop(“属性名”)

②设置属性值
prop(“属性名”,“属性值”)

4.2设置或获取元素自定义属性值 attr()
我们自己给元素添加的属性,称为自定义属性。比如给div添加自定义属性,

<div index="1"> </div>

①获取属性
attr(“属性”)

②设置属性值
attr(“属性”,“属性值”)

此方法也适用于获取和设置h5自定义属性data-index=“2”

4.3数据缓存 data()
data()方法可以在指定的元素上存取数据,并不会修改DOM元素结果。一旦页面刷新,之前存放的数据都会被移除。(这些数据存在数据的缓存上)
①添加数据
data(“数据名”,“值”)

②获取数据
data(“数据名”)

补充:
此方法也可读取h5自定义属性

<div data-index="1"></div>
console.log($("div").data(index"));
//注意!!!不带data-

5.jQuery内容文本值

主要针对元素内容还有表单的值操作

(1)普通元素的内容 html()
(相当于原生innerHTML,识别标签,空格换行等)
①获取元素内容
html()

②设置属性内容
html(“内容”)

<div>
	<span>我是内容</span>
</div>
console.log($("div").html());//<span>我是内容</span>

(2)普通元素文本内容 text()
(相当于原生innerText,不识别标签、空格和换行)
①获取元素内容
text()

②设置属性内容
text(“文本内容”)

<div>
	<span>我是内容</span>
</div>
console.log($("div").html());//我是内容

6. jQuery元素操作

主要是遍历、创建、添加、删除元素操作

6.1遍历元素
jQuery隐式迭代是对同一类元素做了同样的操作,如果想要给同一类元素做不同操作,就需要用遍历

同一类元素做不同的操作:
(1)语法:

$(“div”).each(function(index,domEle){…});

①each()方法遍历匹配每一个元素,主要用于DOM元素操作
②两个参数,index为索引号,domEle为每一个DOM元素对象,不是jQuery对象!!!!
③要使用时要转为jquery对象 $(domEle)

(2)语法:

$.each( $(“div”).function(index,ele){…});

① $.each()可用于遍历任何对象,主要用于数据处理,比如数组对象
②若遍历的是DOM元素得到的仍是DOM对象,要转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        $(function () {
            // $("div").css("color", "red");
            // 如果针对于同一类元素做不同操作,需要用到遍历元素(类似for,但是比for强大)
            var sum = 0;
            // 1. each() 方法遍历元素
            var arr = ["red", "green", "blue"];
            $("div").each(function(i, domEle) {
                // 回调函数第一个参数一定是索引号  可以自己指定索引号号名称
                // console.log(index);
                // console.log(i);
                // 回调函数第二个参数一定是 dom元素对象 也是自己命名
                // console.log(domEle);
                // domEle.css("color"); dom对象没有css方法
                $(domEle).css("color", arr[i]);
                sum += parseInt($(domEle).text());
                console.log(sum);
            })
            // 2. $.each() 方法遍历元素 主要用于遍历数据,处理数据
            $.each($("div"), function(i, ele) {
                console.log(i);
                console.log(ele);
            
            });

            //遍历数组
            $.each(arr, function(i, ele) {
                console.log(i);
                console.log(ele);


            })
            
            //遍历对象
            $.each({
                name: "andy",
                age: 18
            }, function(i, ele) {
                console.log(i); // 输出的是 name age 属性名
                console.log(ele); // 输出的是 andy  18 属性值


            })
        })
      n
    </script>
</body>
</html>

6.2创建元素
语法:动态创建

$("<li></li>")

6.3添加元素
①内部添加(形成父子关系

element.append(“内容”) ;把内容放到匹配元素内部最后面,类似原生appendChild

element.prepend(“内容”) ;把内容放到匹配元素内部最前面

②外部添加(形成兄弟关系

element.after(“内容”); 把内容放目标元素后面

element.before(“内容”) ;把内容放目标元素前面

6.4删除元素

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

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

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

更多方法和属性可以参考jQuery中文文档