jQuery 是一个快速、简洁的 JavaScript 框架,jQuery 设计的宗旨是 “write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装 JavaScript 常用的功能代码,提供一种简便的 JavaScript 设计模式,优化 HTML 文档操作、事件处理、动画设计和 Ajax 交互。


目录

一、认识jQuery

二、jQuery的使用

三、jQuery原理

四、 jQuery API三大特点

五、查找元素

1. 子元素过滤选择器(css选择器)

2. 基本过滤选择器(jQuery专属)

3. 内容过滤器(jQuery专属)

4. 可见性过滤(jQuery专属)

5. 表单元素过滤选择器(jQuery专属)


一、认识jQuery

jQuery 的核心特性是具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的 css 选择器,并且可对 css 选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件,且 jQuery 兼容各种主流浏览器。

jQuery 依旧执行 DOM 的增、删、改、查、事件绑定操作,可以说 jQuery 是 DOM 的延续;jQuery 对 DOM 操作的每一步都进行了简化,是用函数来解决一切问题(jQuery就是函数库)。

但是 jQuery只有PC端,没有移动端,而且只对 DOM 操作的每一步进行了简化,没有减少步骤,所以用的会越来越少。

二、jQuery的使用

到官网jQuery进行下载即可,下载版本后引入网页。

1. 将 jQuery 引入网页的方法

(1)将 jquery.js 文件下载到项目本地文件夹,用相对路径引入

<script src="js/jquery-1.11.3.js">

(2)引入 CDN 网络中的 jquery.js 文件

CDN 网络可在全球范围共享一个文件;任意地区的一个客户端想用 CDN 网络中的文件时,CDN 网络都会从距离这个客户端网络最优的服务器下载资源给客户端。

<script src="官网提供的CDN网址">//eg:微软提供的cdn网址:
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.js">

举例:对比 DOM 与 jQuery 写法;

三、jQuery原理

1. 引入 jquery.js 文件后,会在内存中新增一种类型,包括:

(1)构造函数:创建该类型的子对象;

(2)原型对象:集中保管该类型所有子对象共用的方法。

2. 使用 jQuery 函数库中的函数时,需要先创建 jQuery 类型的子对象

//标准写法
var jq子对象=new jQuery(选择器);//简写
var jq子对象=jQuery(选择器)
var jq子对象=$(选择器)   //$相当于new jQuery  1.查找DOM元素 2.创建jQuery对象

只有 jQuery 子对象才能访问 jQuery 原型对象中的简化版共有方法。原生的 DOM 元素对象无权使用 jQuery 原型对象中的简化版函数。

3.  jQuery 中事件处理函数里的 this

.click 会翻译为 .οnclick=function(){ ... },再执行,所以 .click() 中的 this,其实还是 .onclick 里的 this。与 DOM 中的 this 完全一样,都指向正在点击的当前原生 DOM 元素对象本身;jquery 中所有事件处理函数中的this都必须用 $() 包裹起来(包装),形成一个 jQuery 子对象,才可以使用 jQuery 函数库中的函数。

四、 jQuery API三大特点

1.自带for循环遍历

只对 jQuery 查找结果对象调用一次简化版函数,就可以自动遍历查找结果中每个 DOM 元素,自动为每个 DOM 元素应用多用的 DOM 操作

2.一个函数两用

和修改相关的函数,都既能用于修改新值,又能用于获取旧值;

调用函数时,没有传新值参数,函数默认执行获取旧值操作,

调用函数时,传了新值参数,函数自动改为执行修改为新值操作。

举例:有多个按钮,记录每个按钮的单击次数;

<body><h1>jQueryAPI特点</h1><button id="btn1">click me(0)</button><button id="btn2">click me(0)</button><button id="btn3">click me(0)</button><script src="js/jquery-1.11.3.js"></script><script>//为三个按钮绑定单击事件,记录单击次数//DOM 4步//1. 查找触发事件的元素var $btn = $("button");//2. 绑定事件处理函数$btn.click(function () {//3. 查找要修改的元素:本例中改当前按钮,所以用this  var $this = $(this);//4. 修改元素var n = parseInt($this.html().slice(9, -1));n++;$this.html(`click me(${n})`)});</script>
</body>

五、查找元素

jQuery 主要通过选择器的方式查找元素,除了原始 CSS 选择器之外,还添加了额外 jQuery 专属的选择器。

1. 子元素过滤选择器(css选择器)

:first-child

所有父元素下第一个直接子元素
:last-child 所有父元素下最后一个直接子元素
:nth-child(i)  所有父元素下第i个直接子元素
:only-child   所有父元素下唯一的一个子元素
注意:css中下标从1开始

举例:使用子元素过滤选择器选择指定元素;

<body><h3>子元素过滤选择器.</h3><ul><li>child1-basic0</li><li>child2-basic1</li><li>child3-basic2</li></ul><ul><li>child1-basic3</li><li>child2-basic4</li><li>child3-basic5</li></ul><ul><li>child1-basic6</li></ul><script src="js/jquery-1.11.3.js"></script><script>//查找每个ul中第一个li,让其字体颜色变为红色$("ul>li:first-child").css("color", "red");//查找每个ul中最后一个li,让其边框变为绿色$("ul>li:last-child").css("border", "1px solid green");//查找每个ul中处于偶数位置的,让其背景变为黄色$("ul>li:nth-child(2n)").css("background", "yellow");//查找每个ul中第2个li,添加蓝色阴影$("ul>li:nth-child(2)").css("box-shadow", "0 0 10px blue");//查找作为ul下唯一子元素的li,设置20px内边距$("ul>li:only-child").css("padding", "20px");</script>
</body>

2. 基本过滤选择器(jQuery专属)

先将所有符合要求的元素集中保存到一个大的集合中从0开始统一编号,按元素在集合中的统一编号来选择指定的元素。

:first

:last

在结果集合中排名第一或最后一个的元素

:eq(i)

:lt(i)

:gt(i)

选择在结果集合中下标i等于i、小于i、大于i位置的元素(不包括i)

:even

:odd

选择在结果集合中下标位置i等于偶数位置或奇数位置的元素
注意:jQuery中下标从0开始

举例:使用基本过滤选择器选择指定元素;

<body><h3>基本过滤选择器.</h3><ul><li>child1-basic0</li><li>child2-basic1</li><li>child3-basic2</li></ul><ul><li>child1-basic3</li><li>child2-basic4</li><li>child3-basic5</li></ul><ul><li>child1-basic6</li></ul><script src="js/jquery-1.11.3.js"></script><script>//查找第一个li,字体变化红色$("li:first").css("color", "red");//查找最后一个li,边框变为绿色$("li:last").css("border", "1px solid green");//查找处于(正常人眼)偶数位置的li,背景变为黄色$("li:odd").css("background", "yellow");//查找第2个li,添加蓝色阴影$("li:eq(2)").css("box-shadow", "0 0 10px blue");</script>
</body>

3. 内容过滤器(jQuery专属)

根据元素的内容不同来选择元素。

:contains(文本)

选择内容中包含指定文本关键字的元素

:has(其它选择器) 选择子元素中包含符合选择器要求的元素的父元素
:parent 选择内容非空的元素
:empty  选择内容为空的元素

举例:使用内容过滤选择器选择指定元素;

<body><div class="container"><h1>内容过滤选择器</h1><button>提交订单</button><button>Submit注册信息</button><button>马上提交</button><button>清空重填</button><hr /><div class="alert"></div><div class="alert"><span class="close">×</span></div></div><script src="js/jquery-1.11.3.js"></script><script>//选择包含"提交"二字的按钮,变为绿色按钮$("button:contains(提交)").css("background-color", "green");//选中包含.close按钮的.alert元素,让它们变为红色的警告框$(".alert:has(.close)").css("background-color", "red");//选中不包含.close按钮的.alert元素,让它们变为绿色的警告框$(".alert:not(:has(.close))").css("background-color", "green");//选择内容为空的.alert元素,添加红色阴影$(".alert:empty").css("box-shadow", "0 0 10px red");//选择内容不为空的.alert元素,添加绿色阴影$(".alert:parent").css("box-shadow", "0 0 10px green");</script>

4. 可见性过滤(jQuery专属)

根据元素是否可见来选择元素;

:visible

选择可见的元素
:hidden 选择不可见的元素

举例:使用 :hidden 选择不可见的元素;

<body><div class="container"><h1>可见性选择器</h1><div id="d1" style="display: none">lorem</div><div id="d2" style="visibility: hidden">lorem</div><div id="d3" style="opacity: 0">lorem</div><input id="d4" type="hidden" name="aa" value="bb" /></div><script src="js/jquery-1.11.3.js"></script><script>console.log($('div.container>:hidden'))</script>
</body>

5. 表单元素过滤选择器(jQuery专属)

根据表单元素的类别不同来选择不同的表单元素。

:input

专门选择4大类表单元素(input, select, textarea, button)

:text

选择type="text"的普通文本框
:password 选择type="password"的密码框
:checkbox 选择type="checkbox"的复选框
:radio  选择type="radio"的单选按钮

举例:点同意时启用元素,不同意则禁用元素;

<body><form>用户名:<input disabled></br>密码:<input type="password" disabled></br><input type="checkbox">我同意本站的使用条款<br><input type="submit" value="提交注册信息" disabled /></form><script src="js/jquery-1.11.3.js"></script><script>//DOM 4步//1. 查找触发事件的元素$(":checkbox")//2. 绑定事件处理函数.click(function () {//3. 查找要修改的元素var $others = $(":input:not(:checkbox)")//4. 修改元素//如果当前checkbox是选中的if (this.checked == true) {// 则启用其他元素$others.prop("disabled", false);} else {// 否则禁用其他元素$others.prop("disabled", true);}})</script>
</body>

jQuery(一)jQuery概述、使用方式、原理、查找元素相关推荐

  1. 06-老马jQuery教程-jQuery高级

    1.jQuery原型对象解密 jQuery里面的大部分API都是在jQuery的原型对象上定义的.jQuery源码中对原型对象做了简写的处理.也就是说:jQuery.fn === jQuery.pro ...

  2. 使用选择器语法查找元素——​​​​​​​Selector选择器概述 ——未完待续

    使用选择器语法查找元素 jsoup elements对象支持类似于CSS (或jquery)的选择器语法,来实现非常强大和灵活的查找功能. select 方法在Document, Element,或E ...

  3. jQuery(一)—— jQuery 概述 / jQuery 选择器 / jQuery 样式操作 / jQuery 效果

    原以为 jQuery 不需要学习,但是接触了一些 VUE 框架,发现用到了好多 jQuery 的知识,于是返回来重新学习.本系列笔记大概分为三篇,陆续更新. 参考:W3school -- jQuery ...

  4. jquery.validate+jquery.form提交的三种方式

    原文:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html jquery.validate+jquery.form提交的三种 ...

  5. w3cschool教程之jQuery UI 教程概述

    w3cschool教程之jQuery UI 教程概述 链接地址: http://www.w3cschool.cc/jqueryui/jqueryui-tutorial.html w3cschool教程 ...

  6. js进阶 11-16 jquery如何查找元素的父亲、祖先和子代、后代

    js进阶 11-16 jquery如何查找元素的父亲.祖先和子代.后代 一.总结 一句话总结:过滤或者查找的方法里面可以带参数进行进一步的选择. 1.parent()和parents()方法的区别是什 ...

  7. jquery源码中noConflict(防止$和jQuery的命名冲突)的实现原理

    jquery源码中noConflict(防止$和jQuery的命名冲突)的实现原理 最近在看jquery源码分析的视频教学,希望将视频中学到的知识用博客记录下来,更希望对有同样对jquery源码有困惑 ...

  8. jquery 后代元素_在jQuery中查找元素的所有后代

    jquery 后代元素 In this post, we are going to discuss about an important jQuery traversing method to fin ...

  9. jQuery的介绍与使用方式

    jQuery的介绍与使用方式 jQuery 的介绍 入口函数 $是什么 dom元素和jQuery对象 基础选择器 子代后代选择器 过滤选择器 筛选选择器 全选择器 mouseover和mouseent ...

最新文章

  1. 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法
  2. Golang 编程 — Go Micro 微服务框架
  3. retinaface tensorRT
  4. 如何去掉Delphi自动生成的~.pas等临时文件
  5. 5下载的demo在哪_归类专业能力水平评价练习盘!快来下载呀
  6. 进程上下文与中断上下文
  7. antd中表格的字段设置成掩码
  8. 对正则表达式又重新学了一遍,笔记方便以后查阅
  9. Django  403 CSRF token missing or incorrect.
  10. C语言入门程序——交换两个数
  11. echarts 弹出放大_vue中使用v-chart时放大缩小屏幕,echarts图自适应
  12. Pathon的安装过程
  13. SystemUi通知栏
  14. 纪念Dropbox君
  15. win10查看打印机端口
  16. 分布式技术(下)-RedisFastDFSRabbitMQ
  17. error:src refspec xxx does not match any的原因及解决办法
  18. 安卓手机游戏《英雄迷宫冒险》存档修改
  19. 微凉的风吹着我凌乱的头发,突然决定开个客博,以录下从MATLAB到OMNET的艰难历程
  20. 自动加权GCN算法实现反洗钱识别-有数据有代码

热门文章

  1. phpize Can't find PHP headers in /usr/include/php
  2. 系统是否需重装,三条法则帮你忙
  3. Mac系统硬盘复制之后启动慢的问题
  4. 10-14 查询平均成绩高于75分的学生(MSSQL)
  5. Makefile的使用
  6. 4月20日 疯狂猜成语-----第五次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜...
  7. 膜拜!阿里内部都在强力进阶学习 springboot 实战派文档
  8. eecall网络电话资费的介绍
  9. spark 1.5.x Unable to acquire 33554432 bytes of memory
  10. css 命名 有的加# ,有的加点 ,有的没加。请问下都在什么情况下用的?