《jQuery基础教程》读书笔记
最近在看《jQuery基础教程》这本书,做了点读书笔记以备回顾,不定期更新。
第一章第二章比较基础,就此略过了。。。
第三章 事件
- jQuery中$(document).ready()与javascript原生的window.onload()区别:
$(document).ready():通过该方法注册的事件处理程序,会在DOM完全就绪并使用时调用。虽然这意味着所有元素对脚本而言都是可访问的,但是,却不意味着所有关联的文件都下载完毕。当HTML下载 完成并解析成DOM树之后,代码就可以开始运行了。并且在脚本中可以多次使用该方法,不用担心之前标记的方法被覆盖掉,而原生的window.onload()存在被覆盖的问题。
// window.onload():当文档完全下载到浏览器中时,就会触发该事件。
$(document).read(function(){ //较长的形式能更清楚的表现代码在做什么
//方法实现
});
//上述调用在jQuery中可以简写为:
$(function(){
//方法实现
});
如果在项目中有其他的javascript库用到$关键字,可以在jQuery中调用jQuery.noConflict()方法来出让$的使用权,在代码中用jQuery取代$符号
多个元素响应单击事件的策略事件捕获:
1)在事件捕获的过程中,事件首先会交给最外层的元素,接着再交给更具体的元素。
2)事件冒泡:当事件发生时,会首先发送给最具体的元素,在这个元素获得响应机会之后,事件会向上冒泡到更一般的元素。
最终出台的DOM标准规定应该同时使用这两种策略:首先,事件要从一般元素到具体元素逐层捕获,然后,事件再通过冒泡返回DOM树的顶层。而事件处理程序可以注册到这个过程中的任何一个阶段。为了提供跨浏览器的一致性,jQuery始终会在模型的冒泡阶段注册事件处理程序。因此,我们总是可以假定最具体的元素会首先获得响应事件的机会。
为了了解决事件冒泡带来的不利影响,我们在函数中必须要访问事件对象。事件对象是一种DOM结构,它会在元素获得处理事件的机会时传递交给被调用的事件处理程序,该对象中包含着与事件有 关的信息,也提供了来影响事件在DOM中传递进程的一些方法。
看以下代码:
$(document).ready(function() {
var toggleSwitcher = function(event) {
if (!$(event.target).is('button')) {
$('#switcher button').toggleClass('hidden');
}
};
通过判断event.taget属性值来避免了因为事件冒泡带来的不利影响。当然,在具体元素绑定方法的末尾加上event.stopPropagation()方法同样可以阻止事件冒泡。通过使用.toggle()交替地扩展和折叠页面元素通过使用.hover()图书显示位于鼠标指针下方的页面元素通过.trigger()引发执行绑定的事件处理程序。
第四章 样式与动画
- jQuery与CSS
jQuery提供了css()方法,这个方法集getter与setter于一体。该方法能够接受的参数有两种,一种是为它传递一个单独的样式属性和值,另一种是为它传递一个由属性-值对构成的映射,即javascript对象字面量。
- 创建自定义动画
jQuery提供了一个强大的.animate()方法,用于创建控制更加精细的自定义动画。.animate()方法有两种形式,第一种形式接受以下4个参数。 1)一个包含样式属性以及值的映射--与之前说过的.css()方法中的映射类似。 2)可选的速度参数--既可以是预置的字符串,也可以是毫秒数值。 3)可选的缓动(easing)类型。 4)可选的回调函数
.animate({
param1: value1,
param2: value2},
speed, function() {
/* stuff to do after animation is complete */
});
第二种形式接受两个参数,一个属性映射和一个选项映射:
.animate({properties}, {options}); 这其中的第二个参数是把第一种形式的后三种封装在另一个映射之中。
第五章 DOM树操作
- DOM元素属性与HTML属性:在大多数情况下,二者的作用是一样的。但也存在些许差异。
譬如在DOM中有个属性为className,而对应的类属性在HTML中为class;DOM中的checked属性是一个布尔值,而在HTML中checked属性值是一个字符串。
- $()函数的作用:
1)利用css选择器选择元素
2)传入参数为HTML字符串,可创建一个DOM元素。
- 移动DOM元素的方法(以及相对的反向方法。例如 appendTo()--append())
1).insertBefore()在现有元素外部、之间添加内容
2).prependTo()在现有元素内部、之前添加内容
3).appendTo()在现有元素内部、之后添加内容
4).insertAfter( 在现有元素外部、之后添加内容
- 元素复制:
可以使用Jquery的.clone()方法来创建任何匹配的元素集合的副本。单纯的.clone()方法不会复制匹配的元素及其后代元素中绑定的事件。如果要连同事件一起复制,应调用.clone(true)方法。
- .text()方法可以取得匹配元素的内容或者用新字符串替换匹配元素内容。
.text()方法始终会取得或设置纯文本内容,所有的HTML标签都将被忽略,而所有的HTML实体也会被转换成对应的字符。
- 总结:
1)要在HTML中创建新元素,使用$()函数
2)要在每个匹配的元素中插入新元素,使用:.append() .appendTo() .prepend() .prependTo()
3)要在每个匹配的元素相邻的位置上插入新元素,使用:.after() .insertAfter() .before() .insertBefore()
4)要在每个匹配的元素外部插入新元素,使用:.wrap() .warpAll() .warpInner()
5)要用新元素或文本替换每个匹配的元素使用:.html() .text() .replaceAll() .replaceWith()
6)要移除每个匹配的元素中的元素,使用 .empty()
7)要从文档中移除每个匹配的元素及其后代元素,但不实际删除它们,使用: .remove() .detach()
第六章 通过AJAX发送数据
- AJAX解决方案中涉及到的技术(无需刷新页面就能从服务器/客户端上加载数据的手段)
1)Javascript,通过用户或其他与浏览器相关事件捕获交互作用。
2)XMLHttpRequest对象,通过这个对象可以在不中断其他浏览器任务的情况下向服务器发送请求。
3)服务器上的文件,以XML、HTML或JSON格式保存文本数据。
4)其他javascript,解释来自服务器的数据并将其呈现到页面上。
- $.each()函数不操作jQuery对象,它以数组或映射作为第一个参数,以回调函数作为第二个参数。此外,还需要将每次循环中数组或映射的当前索引和当前项作为回调函数的两个参数。
- .serialize()方法将匹配的DOM元素转换成能够随AJAX请求传递的查询字符串。
- 安全限制:尽管构建动态的Web应用程序非常实用,但XMLHTTPRequest常常会受到严格限制。为了了防止各种跨站点脚本攻击,一般情况下从提供原始页面的服务器之外的站点请求文档是不可能的。但是,有时候必须要从第三方来源中加载数据。有如下解决办法:
1)通过服务器加载远程数据,然后再客户端请求时提供给浏览器,因为服务器能够对数据进行预处理。
2)根据请求注入<script>标签来加载外部Javascript文件。
$(document.createElement('script')).attr('src', 'http://example.com/example.js').appendTo('head');
3)使用<iframe>这个HTML标签来加载远程数据,为该元素指定任何URL作为其获取数据的来源,包括与提供页面的服务器不匹配的URL;位于iframe中的脚本需要明确地向父文档中的对象提供数据。
第七章 使用插件
- 使用jQuery的插件很简单。只要找到查件的URL,在HTML中引用它,然后再脚本中使用即可。
- jQuery官方的插件库 http://plugins.jquery.ocm/ 需要什么插件上去搜索,并看文档和教程。
《jQuery基础教程》读书笔记的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- Bresenham直线算法与画圆算法
在我们内部开发使用的一个工具中,我们需要几乎从 0 开始实现一个高效的二维图像渲染引擎.比较幸运的是,我们只需要画直线.圆以及矩形,其中比较复杂的是画直线和圆.画直线和圆已经有非常多的成熟的算法了,我 ...
- 20145202马超 2016-2017-2 《Java程序设计》第三次实验
实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 在IDEA中使用工具(Code->Re ...
- MVVM模式View和ViewModel的通信
还需要些什么呢 在前面几篇博客中我们尝试去实现了MVVM中的数据绑定.命令绑定和事件绑定.貌似实现的差不多了.我最早尝试用MVVM去开发的时候也是这么想的,没有用第三方框架,甚至只是实现了数据绑定和命 ...
- linux系统iostat命令详解
iostat -k 3 5 (以KB为单位,每3秒统计一次,共统计5次) • avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值 %user 用户空 ...
- mysql高可用架构 -> MHA配置binlog-server-06
前期准备 1.准备一台新的mysql实例(db03),GTID必须开启. 2.将来binlog接收目录,不能和主库binlog目录一样 停止mha masterha_stop --conf=/etc/ ...
- 十二、springcloud之展示追踪数据 Sleuth+zipkin
一.Zipkin简介 Zipkin是Twitter的一个开源项目,它基于Google Dapper实现.我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的REST API接口来辅助我们 ...
- 五、springboot单元测试
1.为什么要写测试用例 1. 可以避免测试点的遗漏,为了更好的进行测试,可以提高测试效率 2. 可以自动测试,可以在项目打包前进行测试校验 3. 可以及时发现因为修改代码导致新的问题的出现,并及时解决 ...
- 阿里妈妈MLR模型(论文)
论文来源:https://arxiv.org/abs/1704.05194v1 阿里技术:https://mp.weixin.qq.com/s/MtnHYmPVoDAid9SNHnlzUw?scene ...
- 经典面试题:n个数字(0,1,…,n-1)形成一个圆圈
题目: n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字). 当一个数字删除后,从被删除数字的下一个继续删 ...
- 判断一个字符是否为数字的两种方法(C/C++)
在平时,我们经常遇见判断字符是否为数字这种题目,虽然感觉还是很简单,不过我是个更喜欢用函数的人,因为我觉得这样更便捷,所以我更推荐第二种方式. 1.直接判断 #include <stdio.h& ...