jQuery(爱前端)

一 jQuery 简介

官网:www.jquery.com

口号:写更少的代码,做更多的事情

jQuery 是一个快速、小型的、特性很多的JS库,它把很多事儿都变得简单。jQuery是免费的、开源的。

jQuery 是 DOM 编程领域的霸主,极大的简化了原生 JavaScript 的 DOM 编程

jQuery 中含有丰富的轮子,完美解决了选择元素难、样式难、动画难、批量操作难等各种兼容问题,

让工程师只需要思考业务,而不必思考细枝末节的兼容问题

 

jQuery有两条版本线:1.X、2.X

 jQuery 2.X 和 1.X 的功能完全一致,API完全一致,但是 2.X 不兼容 IE6、7、8

下载的时候有两个选择:

 

 二 jQuery 整体感知

2.1 选择器

$() 函数就是 jQuery 的核心函数,query 就是选择的意思,也就是说 jQuery的核心招牌功能就是选择元素:

$("#box ul li.haha span").css("background-color","red");

语法: $(“选择器”)

可以用 jQuery来代替,jQuery 是同一个函数: 

jQuery("#box ul li.haha span").css("background-color","red");

2.2 样式

 得到样式(得到计算后的样式):$(".box").css("width");

设置样式: 语法  $(“选择器”).css(JSON);

2.3 动画 

jQuery 内部含有一个运动框架    animate 函数

2.4 批量添加监听、节点关系

 

三 jQuery 

3.1 $() 函数

jQuery 对象不是原生 JS  对象 

$("选择器") 选择出来的东西,是一个类数组对象,是 jQuery 自己的对象,这个 jQuery 对象后面不能跟着原生 JS 的语法:

 $("#box").style.backgroundColor = "red";

因为 .style.backgroundColor 是原生JS语法,$() 原则的对象是 jQuery 对象,不能跟着原生 

 jQuery 对象,转为原生 JS 对象

 

3.2 引号问题

$('选择器')  

注意引号不能丢!!在jQuery世界中,只有三个东西不能加引号,其他必须加引号:

 

3.3 支持的选择器

jQuery 支持所有的 css2.1 的选择器

也支持部分 css3 的选择器

3.4 筛选器

特别的,eq 可以单独提炼为方法,可以连续打点: 

提炼出来的好处是,可以用变量

 

3.5 css 函数

css 函数可以读样式,可以设样式(所有的数值,不需要单位)

读样式,可以读取计算后样式,写一个参数,是不是驼峰,无所谓,但是必须加引号

 

特别的,还支持 += 写法: 

3.5 animate 函数

有没有缓冲呢,有,jQuery 需要插件来完成,我们日后说。

jQuery 默认不是匀速,是easeInOut

jQuery默认有一个处理机制,叫做动画排队。当一个元素接收到了两个 animate 命令之后,后面的animate会排队

先1000毫秒横着跑,然后1000毫秒竖着跑。动画总时长2000。

如果想让元素斜着跑,就是同时变化 left 和 top,就写在同一个 JSON 里面:

不同的元素,不排队,是同时的

 

3.6 事件监听

jQuery颠覆了我们的行文习惯:

事件名一律不写 on。特别的,鼠标进入改成了 mouseenter,鼠标离开改为了mouseleave。

 

四 序与迭代

4.1 eq() 方法

看结构: 两个并列盒子 .box1 和 .box2 中都有 5 个小盒子 div

想让 .box2 中的第二个盒子背景变绿

$('.box2>p:eq(1)').css('backgroundColor','green');
$('p').eq(6).css('backgroundColor','green');
$('.cur').eq(2).css('backgroundColor','green');
$('.box2>.cur').eq(0).css('backgroundColor','green');

注释不同选择器下对应的下标

$() 函数返回的是一组元素,每个方法比如 css 方法内部都有 for 循环迭代 

 4.2 index() 方法

返回这个元素在亲兄弟中的排名,无视选择器怎么选。

$(this).index() 是一个很常见的写法,表示触发这个事件的元素,在自己亲兄弟中的排名

点击上一排 div 中的 p, 下一排对应序号的 p 变色

 

强调一下,是 index() 方法,而不是属性!

 4.3 each()

each() 表示遍历节点,也叫作迭代符合条件的节点

$('p') 调用 each() 方法,同样的设置,对比 i 和 $(this).index() 效果

4.4 size() 方法 和 length 属性

表示 jQuery 对象中元素的个数

 

五 动画相关

5.1 内置  show() , hide(), toggle()

特别的,如果show()、hide()、toggle()里面有数值,将变为动画

 也可以加回调函数

 

5.2 slideDown(), slideUp, slideToggle()方法

以上分别是:下滑展开,上滑收回,滑动切换

slideDown() 的起点一定是 display:none 换句话说,只有 display:none 的元素,才能够调用 slideDown()

同样的,slideDown、slideUp、slideToggle 里面可以写动画时间、回调函数。

动画机理:

一个 display:none 的元素,瞬间显示,瞬间高度变为 0,然后 jQuery 自己捕捉原有的 height 设置为动画的终点

下拉菜单: li > a + div

  mouseenter 事件应该添加在 li 上,而不是 a 上,添加在 a 上,则不能选择到下拉框中的内容

  div 的位置应该贴着 li 元素,不能有缝隙,因为缝隙不属于 li 的范围,也会选择不到下拉框中的内容

  如果想要有缝隙,下拉框再套一个盒子,用 padding 表示缝隙

 

$(this).find('div').slideDown(200); 

5.3 fadeIn(), fadeOut, fadtTo(), fadeToggle() 方法

以上分别是:淡入, 淡出,淡到一定值,淡入淡出切换

 动画机理:

一个 display:none 的元素,瞬间可见,然后瞬间变为 opacity:0,往自己的 opacity 上变。

如果没有设置 opacity,就往1变。

 fadeTo() 有三个参数,第一个参数是动画的时间,第二个参数是要变到的透明度,第三个参数是回调函数 

 fadeTo的起点不一定是 display:none;

 IE6、7、8 兼容,不用关心 filter 这个东西了,jQuery已经帮你写了兼容

 

jQuery 呼吸轮播

图片部分遮盖案例(有文字):

  遮盖元素设置 opacity: 0.5;  文字的透明度也会改变。处理: 文字写到其他元素中

 

5.4 stop()

语法 :stop( 是否清除队列, 是否瞬间完成当前动画 )

如果没有写 true 或者 false,默认是 false

$("div").stop( true ).animate({"left":100},1000);

5.5 finish()

finish()  瞬间完成所有动画队列

$("div").finish();

 

手风琴案例:

ul > li*5 直接用 width 的变化来设置,动画时,最右侧可能会出现空白区域

用定位来做:每个元素鼠标 hover 时 left 到固定位置,其它元素也移动到固定位置

5.6 delay()

delay延迟,可以使用连续打点,必须放在运动语句之前

 

 

 5.7  is(':animated')

is() 方法表示身份探测,返回 true, false

判断是否在运动中,可以防止动画的积累:

和之前的 stop(),不一样,动画正在进行,立即停止手上的动画,执行新的命令

 

六 节点关系

6.1 原生 JS 中的 nodeType 属性

任何的 HTML 元素,都有nodeType属性,值有1~11,老师为大家精简到了5个:

1    元素节点
3文本节点
8注释节点
9document 节点
10DTD

 

 

 

 

 

6.2 原生 JS 中的节点关系  childNodes 

有兼容性问题,chrome, ie9, ie10... 高级浏览器会把空格换行等看成文本节点

ie 6, 7, 8 不会

document.getElementById(“box”).childNodes.length;  //高级浏览器 9,低级浏览器 4

怎么解决这个差异呢?

其它:

firstChild / lastChild

元素.parentNode

previousSibling / nextSibling

  

 

七 各种特效

 

转载于:https://www.cnblogs.com/Bijou/p/10207045.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跳过 centos部署 webpy的各种坑

用centos部署webpy发现的各种坑: 1、python 版本: 2、中文编码: 3、web模块路径: 在命令行里输入python,能import web,但是网站错误报告一直报告没有找到web模块,说明web模块路径有问题。python…

撰写本文的所有基本React.js概念

Update: This article is now part of my book “React.js Beyond The Basics”.更新:本文现在是我的书《超越基础的React.js》的一部分。 Read the updated version of this content and more about React at jscomplete.com/react-beyond-basics.在jscomplete.com…

CentOS 7 firewalld使用简介

2019独角兽企业重金招聘Python工程师标准>>> Centos升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口: 1.快速使用说明 开启…

简述java语言的特点

简述java语言的特点: ① 简单的特性 ② 面向对象的特性 ③ 分布式处理的特性 ④ 健壮的特性 ⑤ 结构中立的特性 ⑥ 安全特性 ⑦ 可移植的特性 ⑧ 解释的特性 ⑨ 高性能的特性 ⑩ 多线程的特性 转载于:https://www.cnblogs.com/qq1335…

php函数嵌套 作用域,javascript 嵌套的函数(作用域链)_javascript技巧

嵌套的函数(作用域链)当你进行函数的嵌套时,要注意实际上作用域链是发生变化的,这点可能看起来不太直观。你可把下面的代码置入firebug监视值的变化。var testvar window属性;var o1 {testvar:1, fun:function(){alert(o1: this.testvaro1.fun();1o2.f…

【C#-枚举】枚举的使用

枚举是用户定义的整数类型。 namespace ConsoleApplication1 {/// <summary>/// 在枚举中使用一个整数值&#xff0c;来表示一天的阶段/// 如&#xff1a;TimeOfDay.Morning返回数字0/// </summary>class EnumExample{public enum TimeOfDay{Morning 0,Afternoon …

Elixir 初尝试 5 -- 遇见Actor

Actor模型的定义 wiki如是说 The actor model in computer science is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent computation. In response to a message that it receives, an actor can: …

创建外部快照_快照事件:现在如何仅通过拍照即可创建日历事件

创建外部快照by Arjun Krishna Babu通过Arjun Krishna Babu 快照事件&#xff1a;现在如何仅通过拍照即可创建日历事件 (Snap Event: How you can now create calendar events just by taking a picture) Google just published my first Android app, Snap Event, in their P…

一个备份sql server文件.bak还原成两个数据库

一直对这个概念很模糊&#xff0c;今天具体一点。 备份文件只要是正常的.bak文件就好。 数据库>还原数据库 直接填写还原之后的文件名就行。 用一份备份文件还原两个一样的库&#xff0c;只是名称不一样。 转载于:https://www.cnblogs.com/Ly426/p/10209825.html

linux服务器防病毒,Linux系统中你不需要防病毒?_服务器评论-中关村在线

误区4&#xff1a;Linux是无病毒。Linux的安全性这么好&#xff0c;这是否意味着Linux是无病毒吗&#xff1f;现实&#xff1a;Linux是非常安全&#xff0c;并不是没有针对Linux方面的病毒。有许多针对Linux的已知病毒。但是几乎所有的已知病毒对于Linux在本质上都是非破坏性的…

外置接口请求

1. 请求接口 /*** 请求接口** param url* param paramsStr* param type Connection.Method.POST* param heads* return*/ public JSONObject sendUpload(String url, String paramsStr, Connection.Method type, Map<String, String> heads) {//发送上传订单请求Str…

python面向对象-1方法、构造函数

类是指&#xff1a;描述一种事物的定义&#xff0c;是个抽象的概念 实例指&#xff1a;该种事物的一个具体的个体&#xff0c;是具体的东西 打个比方&#xff1a; “人”是一个类。“张三”是人类的一个具体例子 在编程时也是同样的道理&#xff0c;你先自己定义一个“类”&am…

bzoj3503: [Cqoi2014]和谐矩阵

高斯消元解异或方程组。学了bitset。对比如下 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define REP(i,s,t) for(int is;i<t;i) #define dwn(i,s,t) for(int is;i>t;i--) #define clr(…

她偏爱雏菊一样的淡黄色_为什么开源项目(非常)偏爱新用户,以及您可以采取什么措施...

她偏爱雏菊一样的淡黄色by Filip Hracek由Filip Hracek 为什么开源项目(非常)偏爱新用户&#xff0c;以及您可以采取什么措施 (Why open source projects (sadly) favor new users, and what you can do about it) Every now and then, all developer products (SDKs, framewo…

linux 脚本 expected,Linux | shell与expect结合使用

在linux操作系统下&#xff0c;使用脚本自动化&#xff0c;一般由两种方案。方案一&#xff1a;telnetftp方案二&#xff1a;sshscpexpect。以下主要使用sshscpexpect为例进行说明使用方式。第一步&#xff1a;安装expect&#xff1a;yum -y install expect第二步&#xff1a;验…

[Swift]LeetCode246.对称数 $ Strobogrammatic Number

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

C++中父类的虚函数必需要实现吗?

一、情景 C中父类的虚函数必需要实现吗&#xff1f; class Vir{ public:virtual void tryVirtual(); };class CVir:public Vir{ public:void tryVirtual(){std::cout<<"CVir"<<std::endl;} };二、说明 &#xff08;1&#xff09;在main函数中&#xff0c…

解决新浪微博API调用限制 突破rate_limit_status瓶颈

新浪微博开放平台API的调用和TWITTER接口一样&#xff0c;都是受限的&#xff0c;以小时为单位进行限定。 他有两个限制原则 1.用户不登录基于IP的限制&#xff0c;每小时1000次 2.用户登录了基于用户的限制&#xff0c;每小时1000次 如果应用是用户不登录的那么就是对IP进行限…

chrome前端开发工具_精通Chrome开发人员工具:更高级别的前端开发技术

chrome前端开发工具by Ben Edelstein通过本爱德斯坦 You may already be familiar with the basic features of the Chrome Developer Tools: the DOM inspector, styles panel, and JavaScript console. But there are a number of lesser-known features that can dramatica…

linux给文件夹图标,linux – 如何在GNOME中以编程方式设置自定义文件夹图标?

我终于想出了如何做到这一点&#xff01;这是一个在标准Gnome环境中工作的Python脚本&#xff1a;#!/usr/bin/env pythonimport sysfrom gi.repository import Gioif len(sys.argv) not in (2, 3):print Usage: {} FOLDER [ICON].format(sys.argv[0])print Leave out ICON to u…