从零开始学_JavaScript_系列(四)——jquery(基础,选择器,触发条件,动画,回调函数)

简介: jQuery语法   (1)引用jquery文件及下载库: http://jquery.com/download/ 下载 Download the compressed, production jQuery 2.2.2 这个是用户版的,已经被精简和压缩。 然后使用 <script src="jquery.js"></script> 来启动这个库文件

jQuery语法

 

1)引用jquery文件及下载库:

http://jquery.com/download/

下载

Download the compressed, production jQuery 2.2.2

这个是用户版的,已经被精简和压缩。

然后使用

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

来启动这个库文件,记得将下载的文件重命名为jquery.js

也可以使用谷歌和微软的CDN,不过这里略。

 

2jQuery语法

$ (selector).action()

其中$是必须的,表示使用jQuery语法;

selector表示你要对哪个进行操作;

action()表示进行的操作;

例如:$(“div”).hide() 其表示对所有div标签包含的内容进行隐藏,如果是<”p”>则表示对p标签包含的东西进行隐藏。

其他:

$(this) 表示对当前HTML元素进行操作

$(“#abc”) 表示对idabc的元素进行操作

$(“.abc”) 表示对class=”abc”的进行操作

 

 

3$(document).ready

这个存在的意义在于,只有当文档加载完毕(不确定是指所有文档,还是指使用的文档的那一部分),才能运行jQuery代码

 

 

4)选择器

$(“p”) 选择元素为<p>

$(“p.abc”) 选择class=”abc”的<p>元素

$(“p#abc”) 选择id=”abc”的<p>元素

 

$(“[href]”) 选择所有带有href属性的元素

$(“[href=’#’]”) 选择所有带href值等于“#”的元素

$(“[href!=’#’]”) 选择所有带href值不等于“#”的元素

$(“[href$=’.jpg’]”) 选择所有带href,末尾以.jpg结尾的元素

more

语法

描述

$(this)

当前 HTML 元素

$("p")

所有 <p> 元素

$("p.intro")

所有 class="intro" <p> 元素

$(".intro")

所有 class="intro" 的元素

$("#intro")

id="intro" 的元素

$("ul li:first")

每个 <ul> 的第一个 <li> 元素

$("[href$='.jpg']")

所有带有以 ".jpg" 结尾的属性值的 href 属性

$("div#intro .head")

id="intro" <div> 元素中的所有 class="head" 的元素

 

 

 

5)事件触发条件

ready是完成后触发,一般用于文档。$(document).ready(执行的命令)

click是点击后触发,一般用于按钮,也可以用于点击文档某区域。$(selector).click(执行的命令)

dclick是双击后触发。$(selector).dclick(执行的命令);

focus是元素获得焦点时触发的事件;

mouseover是鼠标悬停后触发的事件;

更多事件触发参考:

http://www.w3school.com.cn/jquery/jquery_ref_events.asp

 

 

6)名称冲突

例如jQuery和某个库名称冲突了(例如同样适用$符号作为开始),那么使用这个命令;

var jq=jQuery.noConflict(),帮助您使用自己的名称(比如 jq)来代替 $ 符号。

 

 

7)解释

$(document).ready(function(){

  $(".ex .hide").click(function(){

    $(this).parents(".ex").hide("slow");

  });

});

第一行是,当文件准备好了,执行函数,函数内容是后面的:

第二行是,class=”ex”的元素中的class=”hide”元素,点击后触发函数,函数内容为第三行;

第三行是,当前元素(this)的所有祖先元素(parents,一直到根元素html为止)中class=”ex”的元素,被隐藏(hide),速度为缓慢(slow

疑问:

当有两个同样的东西时,为什么只隐藏自己当前这个,不隐藏另外一个?

推测是因为只遍历其祖先,不包含自己(且祖先中符合class=ex要求的)

 

 

8)隐藏和显示

隐藏是hide(),而显示对应的是show()

只要将隐藏的hide()改为显示的show()即可。

 

还可以规定速率:

速率有三种,slow(慢),fast(快),数字(毫秒)。

例如hide(“slow”);   show(“fast”);    hide(2000);

需要注意的是:无参数为瞬间完成,fast为快(但比瞬间慢),slow为慢,数字无需加引号。

 

另有toggle,用法同showhide,效果是,如果是隐藏,点击后显示,如果是显示,点击后隐藏。也可以加时间和速度参数。

问题:假如多次点击,他会执行完每一次的行为,而不是只执行最近一次

 

 

9)淡入和淡出

注意大写,对大小写是敏感的。

fadeIn(); //淡入(显示)

fadeOut(); //淡出(隐藏)

fadeToggle(); //类似toggle,如果隐藏则显示,如果显示则隐藏

fadeTo(速度, 透明度0~1, 返回函数); //可以调整不透明度,注意,不能大于1

 

如:

$("#img_1st").fadeTo(1000,0.3);

1000ms的速度,将id=”img_1st”的东西设置为透明度30%

 

注:

假如有多个淡入同时执行,则分别执行自己的,而不是逐个执行。除非有设置设置其执行顺序。

 

更多特效参考;

http://www.w3school.com.cn/jquery/jquery_ref_effects.asp

 

 

10)滑动

说明:非隐藏的情况下,滑动后就是隐藏了,隐藏的情况下,相反的滑动就是显示。

向上滑动:slideUp();

向下滑动:slideDown();

切换滑动(先向上,再点击则向下):slideToggle()

其他效果:

http://www.w3school.com.cn/jquery/jquery_ref_effects.asp

 

 

 

11)显示

display:none;

cssstyle设置,这种设置为初始不显示。

 

 

12)动画

$(selector).animate({params},speed,callback);

第一个是必须是,表示形成动画的CSS属性,简单的来说,例如初始字号大小为10px,然后这里填写50px,那么字体就会自动变为50px(这个变化的过程就是动画)

 

注意:

①这个可以操纵块,但是似乎是不能操作<p>标签。

②可以操纵CSS属性;

③移动位置的话,需要在style里这么设置:position:fixed

 

一些使用:

$(document).ready(function(){

  $("#b_3rd").click(function(){

    $("#a_3rd").animate(

    {left:'550px', //左边的位置变为550px

     width:'100px', //宽度变为100px

     top:'-=200px', //向上的位置减少200px

     fontSize:'50', //设置字体大小(注意没有-),并且S大写

     });

  });

});

并且由于top使用的是相对位置,因此每次点击top,都会移动位置

还可以设置为属性,例如:

width:’toggle’ //宽度形式的隐藏和显示切换

hide隐藏show显示。

不过貌似不能淡入淡出和改变透明度,是因为淡入淡出本身就是动画么?

 

队列:

$(document).ready(function(){

  $("#b_3rd").click(function(){

    $("#a_3rd").animate({left:'550px'}); //左边的位置变为550px

    $("#a_3rd").animate({width:'100px'});//宽度变为100px

     $("#a_3rd").animate({top:'-=200px'});//向上的位置减少200px

      $("#a_3rd").animate({fontSize:'50'});//设置字体大小(注意没有-),并且S大写

  });

});

这种写法就是让其按顺序执行先移动位置,然后宽度变化,然后往上移动,再字体变大

 

13)停止动画

语法:

$(selector).stop(stopAll,goToEnd);

 

假如有动画队列1234,正在执行1

默认无参数是1停止,下来执行234

第一个参数存在表示1234都停止;

第二个参数表示1停止,但是立刻出结果

 

参数用truefalse来表示。

false, false表示1停止,执行234

false, true表示直接完成1,然后执行234

true, false表示1停止,234取消;

true,true 表示1直接出结果,然后其他停止;

 

如代码:

<div style="position:fixed" id="a_3rd">

<p>用于测试动画的文字</p>

</div>

<div>

<p style="text-align:center">

        <button id="b_3rd" align="center">点击后左面的文字会移动</button>

<button id="b_4th" align="center">点击停止旁边按钮的动画</button>

</p>

</div>

 

以下是对其进行操作:

$(document).ready(function(){

  $("#b_3rd").click(function(){

    $("#a_3rd").animate({left:'550px'},2000); //左边的位置变为550px

    $("#a_3rd").animate({width:'100px'},2000);//宽度变为100px

     $("#a_3rd").animate({top:'-=200px'},2000);//向上的位置减少200px

      $("#a_3rd").animate({fontSize:'50'},2000);//设置字体大小(注意没有-),并且S大写

  });

  $("#b_4th").click(function(){

   $("#a_3rd").stop(true); //停止其的一切动画队列

  });

});

 

 

 

14CallBack函数

称为回调函数,

其作用是,当前动画执行完100%后,执行该函数。

 

可以理解为,当某条件满足之后,执行该函数。

 

 

15AJAX方法(异步请求)

具体来说,是load()方法,语法是:

$(selector).load(URL,data,callback);

 

例如读取某个链接或者本地文件:

  $("#a_3rd").load("a.txt"); //这是标签为#a_3rd的读取文本文档a.txt

 

URL是希望加载的URL(链接);

data参数规定与请求一同发送的查询字符串键/值对集合(不懂,感觉是说这个是查询的时候顺便发个信息给对方);

callback是结束请求后执行的函数;

 

可以在URL里面加入选择器(例如#是选择id的,.是选择class的),来选择某一部分的内容(例如js文件的某个标签的)。

如:

load('/example/jquery/demo_test.txt #p1') //读取id=”p1”的标签内的

也可以把#p1改为h2,读取h2标签内的

 

load的返回值(注意大小写):

responseTxt 包含调用成功时的结果内容

statusTxt 包含返回状态,如果成功是success,如果失败是error

xhr 包含XMLHttpRequest对象(不懂)

 

 

16getpost——两种http请求方法

get——从指定的资源请求数据;

post——向指定的资源提交要被处理的数据;

 

GET方法:

查询字符串(名称/值 对)是在GET请求的URL中发送的;

GET请求可被缓存;

GET请求保留在浏览器历史记录中;

GET请求可被收藏为书签;

GET请求不应在处理敏感数据时使用;

⑤有长度限制;

⑥只应当用于取回数据;

 

POST方法:

①不会被缓存;

②不会被保存在浏览器记录中;

③不能被收藏为书签;

④对数据长度没有要求;

 

GET

POST

后退按钮/刷新

无害

数据会被重新提交(浏览器应该告知用户数据会被重新提交)。

书签

可收藏为书签

不可收藏为书签

缓存

能被缓存

不能缓存

编码类型

application/x-www-form-urlencoded

application/x-www-form-urlencoded multipart/form-data。为二进制数据使用多重编码。

历史

参数保留在浏览器历史中。

参数不会保存在浏览器历史中。

对数据长度的限制

是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。

无限制。

对数据类型的限制

只允许 ASCII 字符。

没有限制。也允许二进制数据。

安全性

POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

在发送密码或其他敏感信息时绝不要使用 GET

POST GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。

可见性

数据在 URL 中对所有人都是可见的。

数据不会显示在 URL 中。

 

 

GET语法:

$.get(URL,callback);

 

 

URL是必须有的,表示链接;

callback请求成功 后执行的回调函数;

 

 

POST语法:

$.post(URL,data,callback);

 

data是连通请求发送的数据。

 

 

以下是收集的资料:

1GET用于信息获取,而且应该是安全的和幂等的。

“安全”大概意思是:

①不安全的信息(敏感的信息)不应该由GET获取;

GET主要用于获取信息,而非修改信息;

GET请求一般不应产生副作用;

 

“幂等”大概意思是:

①对同一个URL的多次请求的结果是相同的。

例如想要获得一个信息,多次请求,应该总能获得这个信息(而非突然变为另外一个信息);

 

GET请求的数据会附在URL之后(把数据放在HTTP协议头中),以“?”分割URL和传输数据,参数之间以“&”相连,如:

login.action?name=hyddd&password=idontknow&%E4%BD%A0%E5%A5%BD

如果数据是英文字母/数字,则原样发送;

如果是空格,则转换为+

如果是中文/其他字符,则把字符串用BASE64加密,得出%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII

 

 

 

2POST表示可能改变服务器上的资源请求

①例如对某论坛的帖子进行回帖,服务器上的该贴多了一个回帖。因此应该通过POST来实现;

 

POST把提交的数据放置在HTTP包的包体之中。

 

3)因此,POST的安全性(关于丢失敏感信息)比GET高,传输的数据更多一些,但是更复杂一点(因为data属性,要发一个表单)。

 

 

 

 

目录
相关文章
|
JSON JavaScript 数据格式
从零开始学_JavaScript_系列(22)——dojo(9)(表单、JsonRest的post方法,widget的使用思路)
(74)dojo的表单模块 插件:dojo/dom-form 参数:domForm 解释:        当我们需要像服务器提交很多内容时(比如很多个input输入框,还有一些单选按钮、多选按钮),我们必须将这些输入框的值变成一个对象(也许还要转为一个json字符串),在post的时候将其传递给服务器;          假如一个一个读过去,这也太傻了。所以这就是dom-for
1585 0
|
JavaScript 前端开发 Python
从零开始学_JavaScript_系列(21)——dojo(8)(手把手教你封装一个widget)
(73)封装一个widget 醒目:必须在web环境下使用,无论是python的web.py或者是通过http访问网站环境,都可以,但纯本地是不可行的。   首先,什么是widget? 简单来说,就是一个dom结点,比如像这样: &lt;div&gt;     这是一个dom结点 &lt;/div&gt;   为什么需要widget呢? 很简单,比如,我们想在这样一个地方:
2041 0
从零开始学_JavaScript_系列(18)——dojo(7)(dojo中类的继承)
关于声明及封装一个类,请查阅我的上一篇博客: http://blog.csdn.net/qq20004604/article/details/51456809 (72)继承一个类 在(71)的基础上,我们继续。 我们之前声明了一个类add,那么计算时,仅仅只有add显然是不够的。我们还需要minus(减去)。 那么我们重新建一个文件minus,然后把add的内容复制过
1206 0
|
前端开发 JavaScript 容器
从零开始学_JavaScript_系列(14)——dojo(7)(饼图,BorderContainer,hashchange,弹窗)
5/5更新。BorderContainer自适应在本地时正常使用的方法,请查看原文代码之前那一段话 (60)创建一个饼形图 比较简单的标签声明法:(只需要修改数据即可) ①首先,加载dojo文件和样式文件:(关于style.css,需要根据自己找到的路径修改,或者使用我从官网上找到的链接:https://dojotoolkit.org/documentation/tutorial
1485 0
|
索引 缓存 前端开发
从零开始学_JavaScript_系列(十一)——dojo(4)(GRID表格进阶:格式化、style、数据获取、多重排序、点击事件)
如果没有阅读过gridx表格的基本运用教程,建议先阅读这篇(4天点击量已经接近5k): http://blog.csdn.net/qq20004604/article/details/51170919 里面很详细的说明了gridx表格的创建,常用模块,和基本使用。 如果没有接触过dojo,建议阅读: http://blog.csdn.net/qq20004604/article
1965 0
|
JavaScript 前端开发 Python
从零开始学_JavaScript_系列(九)——dojo(2)(AJAX、时间控件、鼠标事件、样式修改、事件移除、消息发布订阅)
如果没有接触过dojo,建议阅读: http://blog.csdn.net/qq20004604/article/details/51028702 里面介绍了如何加载dojo。 关于dojo的下载,请查看: https://dojotoolkit.org/download/ 建议下载FULL SOURCE版 如果需要讨论,请评论、或者站内信,我会尽快回复。
2771 0
|
机器学习/深度学习 JavaScript 前端开发
从零开始学_JavaScript_系列(五)——dojo(基础,动画移动,重力模拟,动画合并,添加标签)
关于dojo的下载,请查看: https://dojotoolkit.org/download/ 建议下载FULL SOURCE版 如果需要讨论,请评论、或者站内信,我会尽快回复。   (1)加载 ①首先,先设置   &lt;script&gt;      //替代使用data-dojo-config,我们创建一个dojoConfig对象(是个设置)在我们调
2802 0
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0
|
2月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
77 0
|
2天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
10 1