**目录**
* [一、jQuery简介与第一个jQuery程序](https://www.cnblogs.com/best/p/9097376.html#_label0)
* [1.1、jQuery简介](https://www.cnblogs.com/best/p/9097376.html#_lab2_0_0)
* [ 1.2、jQuery特点](https://www.cnblogs.com/best/p/9097376.html#_lab2_0_1)
* [1.3、jQuery版本](https://www.cnblogs.com/best/p/9097376.html#_lab2_0_2)
* [1.4、获得jQuery库](https://www.cnblogs.com/best/p/9097376.html#_lab2_0_3)
* [1.4.1、开发工具](https://www.cnblogs.com/best/p/9097376.html#_label3_0_3_0)
* [1.5、第一个jQuery程序](https://www.cnblogs.com/best/p/9097376.html#_lab2_0_4)
* [二、jQuery对象和DOM对象](https://www.cnblogs.com/best/p/9097376.html#_label1)
* [2.1、DOM对象](https://www.cnblogs.com/best/p/9097376.html#_lab2_1_0)
* [2.2、jQuery对象](https://www.cnblogs.com/best/p/9097376.html#_lab2_1_1)
* [2.3、DOM转换成jQuery对象](https://www.cnblogs.com/best/p/9097376.html#_lab2_1_2)
* [2.4、jQuery对象转换成DOM对象](https://www.cnblogs.com/best/p/9097376.html#_lab2_1_3)
* [2.5、DOM对象与jQuery对象区别](https://www.cnblogs.com/best/p/9097376.html#_lab2_1_4)
* [三、常用选择器](https://www.cnblogs.com/best/p/9097376.html#_label2)
* [3.1. 选择器和包装集](https://www.cnblogs.com/best/p/9097376.html#_lab2_2_0)
* [3.2. 基本选择器](https://www.cnblogs.com/best/p/9097376.html#_lab2_2_1)
* [3.2.1、通过id获取元素](https://www.cnblogs.com/best/p/9097376.html#_label3_2_1_0)
* [3.2.2、通过类名获取元素](https://www.cnblogs.com/best/p/9097376.html#_label3_2_1_1)
* [3.2.3、通过标签名获取元素](https://www.cnblogs.com/best/p/9097376.html#_label3_2_1_2)
* [四、350行jQuery常用脚本](https://www.cnblogs.com/best/p/9097376.html#_label3)
* [4.1、常用选择器](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_0)
* [4.2、基本筛选器](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_1)
* [4.3、内容选择器](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_2)
* [4.4、表单选择器](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_3)
* [4.5、筛选与查找](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_4)
* [4.6、属性操作](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_5)
* [4.7、样式操作](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_6)
* [4.8、内容操作](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_7)
* [4.9、CSS操作](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_8)
* [4.10、定位与偏移](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_9)
* [4.11、尺寸](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_10)
* [4.12、DOM内部插入](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_11)
* [4.13、DOM外部插入](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_12)
* [4.14、DOM替换](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_13)
* [4.15、DOM删除](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_14)
* [4.16、DOM复制](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_15)
* [4.17、DOM加载完成事件](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_16)
* [4.18、绑定事件](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_17)
* [4.19、事件对象](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_18)
* [4.20、动态事件绑定](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_19)
* [4.21、动画效果](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_20)
* [4.22、工具方法](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_21)
* [4.23、AJAX](https://www.cnblogs.com/best/p/9097376.html#_lab2_3_22)
* [五、AJAX详解](https://www.cnblogs.com/best/p/9097376.html#_label4)
* [5.1、回调函数](https://www.cnblogs.com/best/p/9097376.html#_lab2_4_0)
* [5.2、数据类型](https://www.cnblogs.com/best/p/9097376.html#_lab2_4_1)
* [5.3、发送数据到服务器](https://www.cnblogs.com/best/p/9097376.html#_lab2_4_2)
* [5.4、高级选项](https://www.cnblogs.com/best/p/9097376.html#_lab2_4_3)
* [5.5、参数大全](https://www.cnblogs.com/best/p/9097376.html#_lab2_4_4)
* [六、视频与资料下载](https://www.cnblogs.com/best/p/9097376.html#_label5)
* [七、作业 ](https://www.cnblogs.com/best/p/9097376.html#_label6)
* [7.1、DOM大作业](https://www.cnblogs.com/best/p/9097376.html#_lab2_6_0)
* [7.2、AJAX大作业](https://www.cnblogs.com/best/p/9097376.html#_lab2_6_1)
* [7.3、jQuery UI大作业](https://www.cnblogs.com/best/p/9097376.html#_lab2_6_2)
* [八、上课示例与本章视频](https://www.cnblogs.com/best/p/9097376.html#_label7)
* [8.1、示例源代码](https://www.cnblogs.com/best/p/9097376.html#_lab2_7_0)
* [8.2、视频](https://www.cnblogs.com/best/p/9097376.html#_lab2_7_1)
* [九、其它](https://www.cnblogs.com/best/p/9097376.html#_label8)
* [9.1、javascript对象与each](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_0)
* [ 9.2、新增用户](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_1)
* [9.3、删除与多删除](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_2)
* [9.4、更新与验证](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_3)
* [9.5、打字游戏](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_4)
* [ 9.6、AJAX基础](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_5)
* [9.7、AJAX添加用户 ](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_6)
* [ 9.8、序列化与反序列化](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_7)
* [9.9、原生AJAX ](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_8)
* [XHR构造函数](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_0)
* [XHR属性](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_1)
* [XHR非标准属性](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_2)
* [XHR方法](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_3)
* [abort()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_4)
* [getAllResponseHeaders()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_5)
* [getResponseHeader()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_6)
* [open()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_7)
* [overrideMimeType()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_8)
* [send()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_9)
* [setRequestHeader()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_10)
* [非标准方法](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_11)
* [sendAsBinary()](https://www.cnblogs.com/best/p/9097376.html#_label3_8_8_12)
* [9.10、原生AJAX示例](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_9)
* [9.11、AJAX用户示例](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_10)
* [9.12、artDialog弹出层](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_11)
* [9.13、Bootstrap基础 ](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_12)
* [ 9.14、在线可视化布局系统](https://www.cnblogs.com/best/p/9097376.html#_lab2_8_13)
前一段时间录了一套关于jQuery的视频分享给大家,可以在下载区下载到,本来想配合文字一起的,后面发现视频+帮助文档也是非常好的学习方法。
# 一、jQuery简介与第一个jQuery程序
## 1.1、jQuery简介
jQuery是继Prototype之后又一个优秀的JavaScript库,是一个由John Resig创建于2006年1月的开源项目。现在的jQuery团队主要包括核心库、UI和插件等开发人员以及推广和网站设计维护人员。

jQuery凭借简介的语法和跨浏览器的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发AJAX的操作。其独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。总之,无论是网页设计师、后台开发者、还是项目管理者,也无论是JavaScript初学者还是JavaScript高手,都有足够多的理由去学习jQuery。
## 1.2、jQuery特点
jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。jQuery的特点:
* 功能强大,强调的理念是写的少,做得多(write less,do more)
* 封装了大量常用的DOM操作
* 灵活的事件处理机制
* 拥有完善的AJAX功能
* 扩展性强、插件丰富
* 易学易用
* 多浏览器支持(支持Internet Explorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+,在2.0.0中取消了对Internet Explorer6,7,8的支持)、兼容性好
## 1.3、jQuery版本
jQuery 1.0
(2006年8月):该库的第一个稳定版本,已经具有了对CSS选择符、事件处理和AJAX交互的稳健支持。
jQuery 1.1
(2007年1月):这一版大幅简化了API。许多较少使用的方法被合并,减少了需要掌握和解释的方法数量。
jQuery 1.1.3
(2007年7月):这次小版本变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版本开始,jQuery的性能达到了Prototype、Mootools以及
Dojo等同类JavaScript库的水平。
jQuery 1.2
(2007年9月):这一版去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够支持对效果的更灵活定制,而且借助新增
的命名空间事件,也使插件开发变得更容易。
jQuery UI(2007年9月):这个新的插件套件是作为曾经流行但已过时的Interface插件的替代项目而发布的。jQuery UI中包含大量预定义好的部件(
widget),以及一组用于构建高级元素(例如可拖放的界面元素)的工具。
jQuery 1.2.6
(2008年5月):这一版主要是将Brandon Aaron开发的流行的Dimensions插件的功能移植到了核心库中。
jQuery 1.3
(2009年1月):这一版使用了全新的选择符引擎Sizzle,库的性能也因此有了极大提升。这一版正式支持事件委托特性。
jQuery 1.3.2
(2009年2月):这次小版本升级进一步提升了库的性能,例如改进了:visible/:hidden选择符、.height()/.width()方法的底层处理机制。另外,也支
持查询的元素按文档顺序返回。
jQuery 1.4
(2010年1月14号):对代码库进行了内部重写组织,开始建立一些风格规范。老的core.js文件被分为
attribute.js,css.js,data.js,manipulation.js,traversing.js和queue.js;CSS和attribute的逻辑分离。
jQuery 1.5
(2011年1月31日):该版本修复了83个bug,解决了460个问题。重大改进有:重写了Ajax模块;新增延缓对象(Deferred Objects);jQuery替身
——jQuery.sub();增强了遍历相邻节点的性能;jQuery开发团队构建系统的改进。
jQuery1.7
(2011年11月04号):新版本包含了很多新的特征,特别提升了事件委派时的性能尤其是在IE7下。
jQuery 1.7.2
(2012年03月24号):jQuery 1.7.2正式版发布。
该版本在1.7.1的基础上修复了大量的bug,并改进了部分功能。而相比于1.7.2 RC1,只修复了一个bug。值得注意的是:如果你正在使用jQuery
Mobile,请使用最新的jQuery 1.7.2和jQuery Mobile 1.1这两个版本,因为之前的jQuery Mobile版本还基于jQuery core 1.7.1或更早的版本。
jQuery 1.8.3
2012年11月14日 jQuery 1.8.3 发布,修复 bug 和性能衰退问题、IE8中的HTML相关Bug、jQuery 1.8.2在IE9中调用ajax失败的问题
jQuery 2.0
2013年4月18日 jQuery 2.0正式版发布
不再支持IE 6/7/8:如果在IE9/10版本中使用“兼容性视图”模式也将会受到影响。而jQuery3修复了大量的bug,增加了新的方法,同时移除了一些接口,并修改了少量接口的行为,不1和2是不同的API。
更轻更快:2.0版本文件与1.9.1相比小了12%。可以构建一个更小、更轻量的版本、表现更好。
jQuery 2.0 API完全兼容jQuery 1.9 API。
更多版本请查看:
[https://github.com/jquery/jquery/releases](https://github.com/jquery/jquery/releases)

说明:不管是jQuery1.x还是2.x使用的API都是一样的,只是内部实现的方式有区别,2.x不支持IE6/7/8而1.x则支持,2.x更小,效率更高,但功能是一样。
## 1.4、获得jQuery库
jQuery不需要安装,把下载的jQuery库放到网站的一个公共位置,想要在某个页面上使用jQuery时,只需要在相关的HTML文档中引入该库文件即可。获得jQuery相关资源的网站地址如下:
官网:[http://jquery.com/](http://jquery.com/)
源码:[https://github.com/jquery/jquery](https://github.com/jquery/jquery)
文档:[http://api.jquery.com/](http://api.jquery.com/)
中文帮助:[http://www.jquery123.com/](http://www.jquery123.com/)
CDN:[http://cdn.code.baidu.com/](http://cdn.code.baidu.com/)
jQuery1.12.1在线中文版:[http://hemin.cn/jq/](http://hemin.cn/jq/)
下载较新版的jQuery:下载[jQuery1.11.3帮助与库](http://files.cnblogs.com/files/best/jQuery1.11.3%E5%BA%93%E4%B8%8E%E5%B8%AE%E5%8A%A9.rar)
下载最新版的jQuery:[下载jQuery1.12.4库](https://www.cnblogs.com/best/p/%E4%B8%8B%E8%BD%BDjQuery1.12.4%E5%BA%93)
学习jQuery的权威资料就是帮助文档:

### 1.4.1、开发工具
[http://www.dcloud.io/](http://www.dcloud.io/)

## 1.5、第一个jQuery程序
jQuery的开发不依赖特定的开发工具,使用常用Web开发工具都行,如:Eclipse、Visual Studio、Dreamweaver、intelliJ IDEA、HBuilder、webstorm、sublime、notepad++等。
[](javascript:void(0); "复制代码")
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello jQuery</title>
</head>
<body>
<script src="js/jQuery/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function(){
alert("Hello jQuery!");
});
</script>
</body>
</html>
~~~
[](javascript:void(0); "复制代码")
这里使用HBuilder,这是一个国人开发的基于Eclipse的免费IDE,感觉还不错。
HBuilder下载地址:[http://www.dcloud.io/](http://www.dcloud.io/)(有Mac版与Windows版本)

运行结果:

# 二、jQuery对象和DOM对象
## 2.1、DOM对象
使用JavaScript中的DOM API操作获得的元素对象叫DOM对象。文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。

获得DOM对象的示例:
[](javascript:void(0); "复制代码")
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM元素</title>
</head>
<body>
<h2>DOM元素</h2>
<p id="foo">Foo</p>
<p id="bar">Bar</p>
<script type="text/javascript">
//获得文档中id为foo的元素
var foo=document.getElementById("foo");
//将元素的HTML内容修改为Foo DOM
foo.innerHTML="Foo DOM";
//获得文档中标签名称为p的所有元素
var items=document.getElementsByTagName("p");
//向控制台输出元素数组的个数
console.log(items.length);
//遍历数组中的元素
for (var i=0;i<items.length;i++) {
//将每个元素的HTML内容增加DOM字符
items[i].innerHTML+=" DOM";
}
</script>
</body>
</html>
~~~
[](javascript:void(0); "复制代码")
示例中的foo是一个DOM对象,items是一DOM数组,innerHTML是DOM元素的一个属性。
运行结果:

调试:

在Chrome浏览器按Ctrl+Shift+I启动开发者工具,调试上面的代码,添加监视foo对象,在右侧展开监视的foo对象,可以看到该DOM对象的所有属性、方法与事件信息。
## 2.2、jQuery对象
jQuery对象就是通过jQuery包装DOM对象后产生的对象叫jQuery对象。 jQuery对象是对DOM元素封装过后的数组,也称为包装集。无论选择器匹配了多个或者零个元素,jQuery对象都不再是null。意味着你只能够用jQuery对象的.length属性来判断选择器是否选中了元素。
获得jQuery对象的示例:
[](javascript:void(0); "复制代码")
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery对象</title>
</head>
<body>
<h2>jQuery对象</h2>
<p id="foo">Foo</p>
<p id="bar">Bar</p>
<script type="text/javascript" src="js/jQuery/jquery.min.js" ></script>
<script type="text/javascript">
//从文档中获得id为foo的jQuery对象
var $foo=$("#foo");
//修改$foo元素的HTML内容为Foo jQuery
$foo.html("Foo jQuery");
//获得页面中所有的p标签元素
var $items=$("p");
//从控制台输出元素个数
console.log($items.size());
//遍历并修改元素的HTML内容
$items.html($items.html()+" jQuery");
</script>
</body>
</html>
~~~
[](javascript:void(0); "复制代码")
代码中的是一个对象foo是一个jQuery对象,items也是一个jQuery对象。
运行结果:

调试:

从上面的调试信息中可以看到foo是一个长度为1的集合,集合中下标为0的元素就是1个DOM元素(0:p#foo),上DOM示例中的foo对象完全一样;可以看出foo是一个长度为1的集合,集合中下标为0的元素就是1个DOM元素(0:p#foo),上DOM示例中的foo对象完全一样;可以看出foo是对DOM元素foo的封装,使用功能更加强大,从隐式原型\_\_proto\_\_中的内容就可以看到,中间提供了大量的方法,事件与属性,简化操作。
## 2.3、DOM转换成jQuery对象
要使用jQuery中的方法与属性就需要把一个JavaScript中的DOM对象转换成jQuery对象。
转换方法一:
使用工厂方法jQuery(DOM对象),如jQuery(document.getElementById("foo")),是方法的简写形式,也可以写成是jQuery方法的简写形式,也可以写成(document.getElementById("foo"))
转换方法二:
简化形式jQuery(选择器),如jQuery("#foo"),也可以写成$("#foo")
示例如下:
[](javascript:void(0); "复制代码")
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM转换成jQuery对象</title>
</head>
<body>
<h2>DOM转换成jQuery对象</h2>
<p id="foo">Foo</p>
<p id="bar">Bar</p>
<script type="text/javascript" src="js/jQuery/jquery.min.js" ></script>
<script type="text/javascript">
//方法一
//在文档中获得id为foo的DOM对象
var foo=document.getElementById("foo");
//将DOM对象转换成jQuery对象
var $foo1=jQuery(foo);
var $foo2=$(foo);
//调用jQuery对象中的方法
$foo1.html("Foo jQuery");
$foo2.css("color","red");
//方法二
//获得文档中id为bar的DOM对象,将DOM包装成一个jQuery对象,调用jQuery方法html修改元素HTML
jQuery("#bar").html("Bar jQuery");
//为id为bar的元素设置样式,将前景色修改为蓝色
$("#bar").css("color","blue");
</script>
</body>
</html>
~~~
[](javascript:void(0); "复制代码")
运行结果:

## 2.4、jQuery对象转换成DOM对象
DOM对象是jQuery对象的组成部分,jQuery对象是对DOM对象的包装升级,每一个jQuery对象都是一个集合,是一个包装集,每个包装集中可以包含0到N个DOM元素。将jQuery对象转换成DOM对象方法如下
方法一:
jQuery对象\[下标\]
方法二:
jQuery对象.get(下标)
示例:
[](javascript:void(0); "复制代码")
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery对象转换成DOM对象</title>
</head>
<body>
<h2>jQuery对象转换成DOM对象</h2>
<p id="foo">Foo</p>
<p id="bar">Bar</p>
<script type="text/javascript" src="js/jQuery/jquery.min.js" ></script>
<script type="text/javascript">
//方法一
var $foo=$("#foo");
//从jQuery对象中获得下标为0的DOM元素,并调用DOM属性
$foo[0].innerHTML="foo DOM";
//方法二
var $p=$("p");
//从jQuery对象中获得下标为1的DOM元素,并调用DOM属性
$p.get(1).innerHTML="bar DOM";
</script>
</body>
</html>
~~~
[](javascript:void(0); "复制代码")
运行结果:

## 2.5、DOM对象与jQuery对象区别
1. DOM对象只能调用DOM方法、属性与事件;
2. jQuery对象只能调用jQuery方法、属性与事件;
3. 可以将DOM转换成jQuery对象,也可以将jQuery转换成DOM对象;
4. $只是jQuery的别名形式;
5. 每一个jQuery对象都是一个DOM对象的集合
# 三、常用选择器
通过jQuery中的选择器实际上取得的是HTML中的DOM元素。在jQuery中使用CSS匹配(CSS like)来进行元素指定,比其他JavaScript库都简单,这也正是jQuery在网页设计人员中大受欢迎的理由了。
在其核心,jQuery重点放在从HTML页面里获取元素并对其进行操作。如果你熟悉CSS,就会很清楚选择器的威力,通过元素的特性或元素在文档中的位置去描述元素组。有了jQuery,就能够利用现有知识去发挥选择器的威力,在很大程度上简化JavaScript代码。CSS中可以使用的选择器基本都可以用到jQuery中,反之不然。
## 3.1. 选择器和包装集
为了使设计和内容分离而把CSS引入Web技术的时候,需要以某种方式从外部样式表中引用页面元素组。开发出来的方法就是通过使用选择器—基于元素的属性或元素在HTML文档中的位置,简明地表现元素。
例如,选择器:p a
引用所有嵌套于元素之内的超链接(元素)组。jQuery利用同样的选择器,不仅支持目前CSS中使用的常见选择器,还支持尚未被大多数浏览器完全实现的更强大的选择器。收集一组元素,可以使用如下简单的语法:
~~~
$(selector) 或者 jQuery(selector)
~~~
也许刚开始你会觉得$()符号有点奇怪,但大部分jQuery用户很快就喜欢上它的简洁。例如,为了获取嵌套在元素内的一组超链接,我们使用如下语句:
~~~
$("p a")
~~~
$( )函数返回特别的JavaScript对象,它包含着与选择器相匹配的DOM元素的数组。该对象拥有大量预定义的有用方法,能够作用于该组元素。
用编程的话来说,这种构造称为包装器(wrapper),因为它用扩展功能来对匹配的元素进行包装。我们使用术语jQuery包装器或者包装集(wrapped set),来指能够在其上用jQuery定义的方法去操作的、匹配元素的集合。
假定我们想选择带有CSS类notLongForThisWorld的所有元素。jQuery语句如下所示:
~~~
$("notLongForThisWorld");
~~~
## 3.2. 基本选择器
基本选择器是jQuery中最常用的选择器,也是最简单的选择器,它通过元素id、class和标签名等来查找DOM元素。在网页中,每个id名称只能使用一次,class允许重复使用。
选择器描述返回示例#id根据给定的id匹配一个元素单个元素$("#test")选取id为test的元素.class根据给定的类名匹配元素集合元素$(".test")选取所有class为test的元素element根据给定的元素名称匹配元素集合元素$("p")选取所有的<p>元素selector1,selector2,selector3...将每一个选择器匹配到的元素合并后一起返回集合元素$("div,span,p.cls")选取所有<div>,<span>和拥有class为cls的<p>标签的一组元素*匹配所有元素集合元素$("*")选取所有的元素
可以使用这些基本选择器来完成绝大多数的工作,下面我们对这些选择器一一进行讲解。
### 3.2.1、通过id获取元素
在CSS中经常使用id来控制元素,在jQuery中获取元素时,也使用同样方法。与CSS一样,在id前面加上#号。
语法:**$("#id")**
可以控制指定id的HTML元素,在HTML中有id不可重复的规定,因此可以控制文档内部惟一的元素。如果定义了多个同名的id元素,则只有最初出现的同名id有效。在JavaScript中使用document对象的getElemnetById(id)方法来获取元素,在jQuery中则更为简化。同时通过jQuery获得id对应的元素后可以调用jQuery中的相应方法对该元素进行操作,具体代码如下所示:
[](javascript:void(0); "复制代码")
~~~
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
<div id="notMe"><p>id="notMe"</p></div>
<div id="myDiv">id="myDiv"</div>
<script>
$("#myDiv").css("border","3px solid red");
</script>
~~~
[](javascript:void(0); "复制代码")
### 3.2.2、通过类名获取元素
在网页当中,使用class属性引用样式表中的类样式,因为类样式的可重用,所以多个元素可以引用同一个样式。在jQuery中,可以获取同一类名的多个HTML元素,编写方式同CSS,即在类名的前面加上点号。
语法:**$(".className")**
本例通过类名来获取元素,因为使用同一个类样式的元素可能有多个,所以通过类名来获取元素返回的将是一个数组对象,即jQuery中的包装集,然后对此包装集中的元素进行相关操作。示例代码如下所示:
[](javascript:void(0); "复制代码")
~~~
<div class="myclass">div class="notMe"</div>
<div class="myclass otherclass">div class="myClass"</div>
<span class="myclass otherclass">span class="myClass"</span>
<script>
$(".myclass.otherclass").css("border","13px solid red");
</script>
~~~
[](javascript:void(0); "复制代码")
### 3.2.3、通过标签名获取元素
在CSS中我们通常使用标签名来为这一类标签定义样式,在jQuery中也可以用同样方法来获取标签元素。
如果使用普通JavaScript,则必须用document对象的getElementsByTagName(tagName)方法来进行元素的抓取。而jQuery方法与CSS相同,指定需要操作的标签名即可操控所有的标签。
语法:**$("tagName")**
示例代码如下所示:
[](javascript:void(0); "复制代码")
~~~
<div>DIV1</div>
<div>DIV2</div>
<span>SPAN</span>
<script>
$("div").css("border","9px solid red");
</script>
~~~
[](javascript:void(0); "复制代码")
# 四、350行jQuery常用脚本
## 4.1、常用选择器
[](javascript:void(0); "复制代码")
~~~
$('#div1') //id为div1的节点,如<div id='div1'></div>
$('span') //所有的span结点,一个包装集
$('p span') //p标签下的所有span节点,后代节点
$('p>span') //p标签下的所有span子节点,子代节点
$('.red') //使用样式red的节点,如<span class="red"></span>
$('*') //所有节点
$("div,span,p.cls") //选取所有<div>,<span>和拥有class为cls的<p>标签的一组元素
~~~
[](javascript:void(0); "复制代码")
## 4.2、基本筛选器
[](javascript:void(0); "复制代码")
~~~
$('span:first') //第一个节点
$('span:last') //最后一个节点
$("td:even") //索引为偶数的节点,从 0 开始
$("td:odd") //索引为奇数的节点,从 0 开始
$("td:eq(1)") //给定索引值的节点
$("td:gt(0)") //大于给定索引值的节点
$("td:lt(2)") //小于给定索引值的节点
$(":focus") //当前获取焦点的节点
$(":animated") //正在执行动画效果的节点
~~~
[](javascript:void(0); "复制代码")
## 4.3、内容选择器
~~~
$("div:contains('hello')") //包含hello文本的节点
$("td:empty") //不包含子节点或者文本的空节点
$("div:has(p)") //含有选择器所匹配的节点
$("td:parent") //含有子节点或者文本的节点
~~~
## 4.4、表单选择器
[](javascript:void(0); "复制代码")
~~~
$("input:checked") //所有选中的节点
$("select option:selected") //select中所有选中的option节点
$(":input") //匹配所有 input, textarea, select 和 button 节点
$(":text") //所有的单行文本框
$(":password") //所有密码框
$(":radio") //所有单选按钮
$(":checkbox") //所有复选框
$(":submit") //所有提交按钮
$(":reset") //所有重置按钮
$(":button") //所有button按钮
$(":file") //所有文件域
~~~
[](javascript:void(0); "复制代码")
## 4.5、筛选与查找
[](javascript:void(0); "复制代码")
~~~
$("p").eq(0) //当前操作中第N个jQuery对象,类似索引
$('li').first() //第一个节点
$('li').last() //最后一个节点
$(this).hasClass("node") //节点是否含有某个特定的类,返回布尔值
$('li').has('ul') //包含特定后代的节点
$("div").children() //div中的每个子节点,第一层
$("div").find("span") //查找div下的所有span节点
$("p").next() //紧邻p节点后的一个同辈节点
$("p").nextAll() //p节点之后所有的同辈节点
$("#node").nextUntil("#node2") //id为"#node"节点之后到id为'#node2'之间所有的同辈节点,掐头去尾
$("p").prev() //紧邻p节点前的一个同辈节点
$("p").prevAll() //p节点之前所有的同辈节点
$("#node").prevUntil("#node2") //id为"#node"节点之前到id为'#node2'之间所有的同辈节点,掐头去尾
$("p").parent() //每个p节点的父节点
$("p").parents() //每个p节点的所有祖先节点,body,html
$("#node").parentsUntil("#node2") //id为"#node"节点到id为'#node2'之间所有的父级节点,掐头去尾
$("div").siblings() //所有的同辈节点,不包括自己
~~~
[](javascript:void(0); "复制代码")
## 4.6、属性操作
[](javascript:void(0); "复制代码")
~~~
$("img").attr("src"); //返回文档中所有图像的src属性值
$("img").attr("src","node.jpg"); //设置所有图像的src属性
$("img").removeAttr("src"); //将文档中图像的src属性删除
$("input[type='checkbox']").prop("checked", true); //选中复选框
$("input[type='checkbox']").prop("checked", false); //不选中复选框
$("img").removeProp("src"); //删除img的src属性
~~~
[](javascript:void(0); "复制代码")
## 4.7、样式操作
~~~
$("p").addClass("selected"); //为p节点加上 'selected' 类
$("p").removeClass("selected"); //从p节点中删除 'selected' 类
$("p").toggleClass("selected"); //如果存在就删除,否则就添加HTML代码/文本/值
~~~
## 4.8、内容操作
[](javascript:void(0); "复制代码")
~~~
$('p').html(); //返回p节点的html内容
$("p").html("Hello <b>hello</b>!"); //设置p节点的html内容
$('p').text(); //返回p节点的文本内容
$("p").text("hello"); //设置p节点的文本内容
$("input").val(); //获取文本框中的值
$("input").val("hello"); //设置文本框中的内容
~~~
[](javascript:void(0); "复制代码")
## 4.9、CSS操作
~~~
$("p").css("color"); //访问查看p节点的color属性
$("p").css("color","red"); //设置p节点的color属性为red
$("p").css({ "color": "red", "background": "yellow" }); //设置p节点的color为red,background属性为yellow(设置多个属性要用{}字典形式)
~~~
## 4.10、定位与偏移
[](javascript:void(0); "复制代码")
~~~
$('p').offset() //节点在当前视口的相对偏移,对象 {top: 5, left: 9}
$('p').offset().top
$('p').offset().left
$("p").position() //节点相对父节点的偏移,对可见节点有效,Object {top: 5, left: 8}
$(window).scrollTop() //获取滚轮滑的高度
$(window).scrollLeft() //获取滚轮滑的宽度
$(window).scrollTop('25') //设置滚轮滑的高度为25
~~~
[](javascript:void(0); "复制代码")
## 4.11、尺寸
[](javascript:void(0); "复制代码")
~~~
$("p").height(); //获取p节点的高度
$("p").width(); //获取p节点的宽度
$("p:first").innerHeight() //获取第一个匹配节点内部区域高度(包括补白、不包括边框)
$("p:first").innerWidth() //获取第一个匹配节点内部区域宽度(包括补白、不包括边框)
$("p:first").outerHeight() //匹配节点外部高度(默认包括补白和边框)
$("p:first").outerWidth() //匹配节点外部宽度(默认包括补白和边框)
$("p:first").outerHeight(true) //为true时包括边距
~~~
[](javascript:void(0); "复制代码")
## 4.12、DOM内部插入
~~~
$("p").append("<b>hello</b>"); //每个p节点内后面追加内容
$("p").appendTo("div"); //p节点追加到div内后
$("p").prepend("<b>Hello</b>"); //每个p节点内前面追加内容
$("p").prependTo("div"); //p节点追加到div内前
~~~
## 4.13、DOM外部插入
~~~
$("p").after("<b>hello</b>"); //每个p节点同级之后插入内容
$("p").before("<b>hello</b>"); //在每个p节点同级之前插入内容
$("p").insertAfter("#node"); //所有p节点插入到id为node节点的后面
$("p").insertBefore("#node"); //所有p节点插入到id为node节点的前面
~~~
## 4.14、DOM替换
~~~
$("p").replaceWith("<b>Paragraph. </b>"); //将所有匹配的节点替换成指定的HTML或DOM节点
$("<b>Paragraph. </b>").replaceAll("p"); //用匹配的节点替换掉所有 selector匹配到的节点
~~~
## 4.15、DOM删除
~~~
$("p").empty(); //删除匹配的节点集合中所有的子节点,不包括本身
$("p").remove(); //删除所有匹配的节点,包括本身
$("p").detach(); //删除所有匹配的节点(和remove()不同的是:所有绑定的事件、附加的数据会保留下来)
~~~
## 4.16、DOM复制
~~~
$("p").clone() //克隆节点并选中克隆的副本
$("p").clone(true) //布尔值指事件处理函数是否会被复制
~~~
## 4.17、DOM加载完成事件
[](javascript:void(0); "复制代码")
~~~
$(document).ready(function(){
您的代码...
});
//缩写
$(function($) {
您的代码...
});
~~~
[](javascript:void(0); "复制代码")
## 4.18、绑定事件
[](javascript:void(0); "复制代码")
~~~
//bind 为每个匹配节点绑定事件处理函数,绑定多个用{}。
$("p").bind("click", function(){
alert( $(this).text() );
});
$('#div1').bind({
"mouseover":function () {
$('#div1').parent().removeClass("hide");
},"mouseout":function () {
$('#div1').parent().addClass("hide");
}
});
$("p").one( "click", function(){}) //事件绑定后只会执行一次
$("p").unbind( "click" ) //反绑一个事件
//与bind 不同的是当时间发生时才去临时绑定。
$("p").delegate("click",function(){
您的代码
});
$("p").undelegate(); //p节点删除由 delegate() 方法添加的所有事件
$("p").undelegate("click") //从p节点删除由 delegate() 方法添加的所有click事件
$("p").click(); //单击事件
$("p").dblclick(); //双击事件
$("input[type=text]").focus() //节点获得焦点时,触发 focus 事件
$("input[type=text]").blur() //节点失去焦点时,触发 blur事件
$("button").mousedown()//当按下鼠标时触发事件
$("button").mouseup() //节点上放松鼠标按钮时触发事件
$("p").mousemove() //当鼠标指针在指定的节点中移动时触发事件
$("p").mouseover() //当鼠标指针位于节点上方时触发事件
$("p").mouseout() //当鼠标指针从节点上移开时触发事件
$(window).keydown() //当键盘或按钮被按下时触发事件
$(window).keypress() //当键盘或按钮被按下时触发事件,每输入一个字符都触发一次
$("input").keyup() //当按钮被松开时触发事件
$(window).scroll() //当用户滚动时触发事件
$(window).resize() //当调整浏览器窗口的大小时触发事件
$("input[type='text']").change() //当节点的值发生改变时触发事件
$("input").select() //当input 节点中的文本被选择时触发事件
$("form").submit() //当提交表单时触发事件
$(window).unload() //用户离开页面时
~~~
[](javascript:void(0); "复制代码")
## 4.19、事件对象
[](javascript:void(0); "复制代码")
~~~
$("p").click(function(event){
alert(event.type); //"click"
});
(evnet object) 属性方法:
event.pageX //事件发生时,鼠标距离网页左上角的水平距离
event.pageY //事件发生时,鼠标距离网页左上角的垂直距离
event.type //事件的类型
event.which //按下了哪一个键
event.data //在事件对象上绑定数据,然后传入事件处理函数
event.target //事件针对的网页节点
event.preventDefault() //阻止事件的默认行为(比如点击链接,会自动打开新页面)
event.stopPropagation() //停止事件向上层节点冒泡
~~~
[](javascript:void(0); "复制代码")
## 4.20、动态事件绑定
~~~
//当p中增加span时仍然有效
$("p").on("click",'span',function(){
alert( $(this).text() );
});
~~~
## 4.21、动画效果
[](javascript:void(0); "复制代码")
~~~
$("p").show() //显示隐藏的匹配节点
$("p").show("slow"); //参数表示速度,("slow","normal","fast"),也可为600毫秒
$("p").hide() //隐藏显示的节点
$("p").toggle(); //切换 显示/隐藏
$("p").slideDown("600"); //用600毫秒时间将段落滑下
$("p").slideUp("600"); //用600毫秒时间将段落滑上
$("p").slideToggle("600"); //用600毫秒时间将段落滑上,滑下淡入淡出
$("p").fadeIn("600"); //用600毫秒时间将段落淡入
$("p").fadeOut("600"); //用600毫秒时间将段落淡出
$("p").fadeToggle("600"); //用600毫秒时间将段落淡入,淡出
$("p").fadeTo("slow", 0.6); //用600毫秒时间将段落的透明度调整到0.6
~~~
[](javascript:void(0); "复制代码")
## 4.22、工具方法
[](javascript:void(0); "复制代码")
~~~
$("#form1").serialize() //序列表表格内容为字符串。
$("select, :radio").serializeArray(); //序列化表单元素为数组返回 JSON 数据结构数据
$.trim() //去除字符串两端的空格
$.each() //遍历一个数组或对象,for循环
$.inArray() //返回一个值在数组中的索引位置,不存在返回-1
$.grep() //返回数组中符合某种标准的节点
$.extend({a:1,b:2},{b:3,c:4},{c:5:d:6}) //将多个对象,合并到第一个对象{a:1,b:3,c:5,d:6}
$.makeArray() //将对象转化为数组
$.type() //判断对象的类别(函数对象、日期对象、数组对象、正则对象等等
$.isArray() //判断某个参数是否为数组
$.isEmptyObject() //判断某个对象是否为空(不含有任何属性)
$.isFunction() //判断某个参数是否为函数
$.isPlainObject() //判断某个参数是否为用"{}"或"new Object"建立的对象
$.support() //判断浏览器是否支持某个特性
~~~
[](javascript:void(0); "复制代码")
## 4.23、AJAX
[](javascript:void(0); "复制代码")
~~~
//保存数据到服务器,成功时显示信息
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
~~~
[](javascript:void(0); "复制代码")
~~~
//加载 feeds.html 文件内容。
$("#feeds").load("feeds.html");
~~~
~~~
//请求 test.php 网页,传送2个参数,忽略返回值。
$.get("test.php", { name: "John", time: "2pm" } );
~~~
[](javascript:void(0); "复制代码")
~~~
//从 Flickr JSONP API 载入 4 张最新的关于猫的图片。
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format
=json&jsoncallback=?", function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
~~~
[](javascript:void(0); "复制代码")
[](javascript:void(0); "复制代码")
~~~
//加载并执行 test.js ,成功后显示信息
$.getScript("test.js", function(){
alert("Script loaded and executed.");
});
//向页面 test.php 发送数据,并输出结果(HTML 或 XML,取决于所返回的内容):
$.post("test.php", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
//AJAX 请求完成时执行函数。
$("#msg").ajaxComplete(function(event,request, settings){
$(this).append("<li>请求完成.</li>");
});
//AJAX 请求失败时显示信息。
$("#msg").ajaxError(function(event,request, settings){
$(this).append("<li>出错页面:" + settings.url + "</li>");
});
//AJAX 请求发送前显示信息。
$("#msg").ajaxSend(function(evt, request, settings){
$(this).append("<li>开始请求: " + settings.url + "</li>");
});
//AJAX 请求开始时显示信息。
$("#loading").ajaxStart(function(){
$(this).show();
});
//AJAX 请求结束后隐藏信息。
$("#loading").ajaxStop(function(){
$(this).hide();
});
//当 AJAX 请求成功后显示消息。
$("#msg").ajaxSuccess(function(evt, request, settings){
$(this).append("<li>请求成功!</li>");
});
//请求前过滤
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
// Modify options, control originalOptions, store jqXHR, etc
});
//设置全局 AJAX 默认选项,设置 AJAX 请求默认地址为 "/xmlhttp/",禁止触发全局 AJAX 事件,用 POST 代替默认 GET 方法。其后的 AJAX 请求不再设置任何选项参数。
$.ajaxSetup({
url: "/xmlhttp/",
global: false,
type: "POST"
});
$.ajax({ data: myData });
~~~
[](javascript:void(0); "复制代码")
# 五、AJAX详解
AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的开发技术。其使用基于Web2.0标准的XHTML+CSS表示方式,使用DOM(Document Object Model)进行动态显示及交互,使用XML和XSLT进行数据交换及其相关操作,使用XMLHttpRequest进行异步数据查询、检索,使用JavaScript将所有的东西绑定在一起。

AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其他一些基于XML的Web Service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应速度更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,Web服务的处理时间也就减少了。

jQuery为AJAX带来方便,语法格式如下:
jQuery.ajax(url,\[settings\])
通过 HTTP 请求加载远程数据。
jQuery 底层 AJAX 实现。简单易用的高层实现见.get,.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
最简单的情况下,$.ajax()可以不带任何参数直接使用。
**注意**,所有的选项都可以通过$.ajaxSetup()函数来全局设置。
## 5.1、回调函数
如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。
* beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
* error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
* dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
* success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
* complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。
## 5.2、数据类型
$.ajax()函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XML,那么返回的结果就可以用普通的XML方法或者jQuery的选择器来遍历。如果见得到其他类型,比如HTML,则数据就以文本形式来对待。
通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。
其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数,
'''注意''',我们必须确保网页服务器报告的MIME类型与我们选择的dataType所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。
如果指定为html类型,任何内嵌的JavaScript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。
如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。
**注意**,JSONP是JSON格式的扩展。他要求一些服务器端的代码来检测并处理查询字符串参数。
如果指定了script或者jsonp类型,那么当从服务器接收到数据时,实际上是用了<script>标签而不是XMLHttpRequest对象。这种情况下,$.ajax()不再返回一个XMLHttpRequest对象,并且也不会传递事件处理函数,比如beforeSend。
## 5.3、发送数据到服务器
默认情况下,Ajax请求使用GET方法。如果要使用POST方法,可以设定type参数值。这个选项也会影响data选项中的内容如何发送到服务器。
data选项既可以包含一个查询字符串,比如 key1=value1&key2=value2 ,也可以是一个映射,比如 {key1: 'value1', key2: 'value2'} 。如果使用了后者的形式,则数据再发送器会被转换成查询字符串。这个处理过程也可以通过设置processData选项为false来回避。如果我们希望发送一个XML对象给服务器时,这种处理可能并不合适。并且在这种情况下,我们也应当改变contentType选项的值,用其他合适的MIME类型来取代默认的 application/x-www-form-urlencoded 。
## 5.4、高级选项
global选项用于阻止响应注册的回调函数,比如.ajaxSend,或者ajaxError,以及类似的方法。这在有些时候很有用,比如发送的请求非常频繁且简短的时候,就可以在ajaxSend里禁用这个。更多关于这些方法的详细信息,请参阅下面的内容。
如果服务器需要HTTP认证,可以使用用户名和密码可以通过username和password选项来设置。
Ajax请求是限时的,所以错误警告被捕获并处理后,可以用来提升用户体验。请求超时这个参数通常就保留其默认值,要不就通过jQuery.ajaxSetup来全局设定,很少为特定的请求重新设置timeout选项。
默认情况下,请求总会被发出去,但浏览器有可能从他的缓存中调取数据。要禁止使用缓存的结果,可以设置cache参数为false。如果希望判断数据自从上次请求后没有更改过就报告出错的话,可以设置ifModified为true。
scriptCharset允许给<script>标签的请求设定一个特定的字符集,用于script或者jsonp类似的数据。当脚本和页面字符集不同时,这特别好用。
Ajax的第一个字母是asynchronous的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。$.ajax()的async参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死。
$.ajax函数返回他创建的XMLHttpRequest对象。通常jQuery只在内部处理并创建这个对象,但用户也可以通过xhr选项来传递一个自己创建的xhr对象。返回的对象通常已经被丢弃了,但依然提供一个底层接口来观察和操控请求。比如说,调用对象上的.abort()可以在请求完成前挂起请求。
## 5.5、参数大全
### **$.ajax(url,\[settings\])**
url:一个用来包含发送请求的URL字符串。
settings:AJAX 请求设置。所有选项都是可选的。
settings是ajax参数对象,如:
[](javascript:void(0); "复制代码")
~~~
//ajax一般形式,路径也可以使用setting中的url属性
$.ajax(""some.php"",
{
type: "POST",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
~~~
[](javascript:void(0); "复制代码")
#### **settings所有可以选择的参数如下:**
#### accepts Map
默认: 取决于数据类型。
内容类型发送请求头,告诉服务器什么样的响应会接受返回。如果accepts设置需要修改,推荐在$.ajaxSetup()方法中做一次。
#### async Boolean
(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
#### beforeSend(XHR) Function
发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。这是一个 Ajax 事件。如果返回false可以取消本次ajax请求。
~~~
function (XMLHttpRequest) {
this; // 调用本次AJAX请求时传递的options参数
}
~~~
#### cache Boolean
(默认: true,dataType为script和jsonp时默认为false) jQuery 1.2 新功能,设置为 false 将不缓存此页面。
#### complete(XHR, TS) Function
请求完成后回调函数 (请求成功或失败之后均调用)。参数: XMLHttpRequest 对象和一个描述成功请求类型的字符串。 Ajax 事件。
~~~
function (XMLHttpRequest, textStatus) {
this; // 调用本次AJAX请求时传递的options参数
}
~~~
#### contents Map
一个以"{字符串:正则表达式}"配对的对象,用来确定jQuery将如何解析响应,给定其内容类型。
#### contentType String
(默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数情况。如果你明确地传递了一个content-type给 $.ajax() 那么他必定会发送给服务器(即使没有数据要发送)
#### context Object
这个对象用于设置Ajax相关回调函数的上下文。也就是说,让回调函数内this指向这个对象(如果不设定这个参数,那么this就指向调用本次AJAX请求时传递的options参数)。比如指定一个DOM元素作为context参数,这样就设置了success回调函数的上下文为这个DOM元素。就像这样:
~~~
$.ajax({ url: "test.html", context: document.body, success: function(){
$(this).addClass("done");
}});
~~~
#### converters map
默认: {"\* text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML}
一个数据类型对数据类型转换器的对象。每个转换器的值是一个函数,返回响应的转化值
#### crossDomain map
默认: 同域请求为false
跨域请求为true如果你想强制跨域请求(如JSONP形式)同一域,设置crossDomain为true。这使得例如,服务器端重定向到另一个域
#### data Object,String
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:\["bar1", "bar2"\]} 转换为 "&foo=bar1&foo=bar2"。
#### data Filter Function
给Ajax返回的原始数据的进行预处理的函数。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
~~~
function (data, type) {
// 对Ajax返回的原始数据进行预处理
return data // 返回处理后的数据
}
~~~
#### dataType String
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回 JSON 数据 。
"jsonp":[JSONP](http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/ "http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/")格式。使用[JSONP](http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/ "http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/")形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串
#### error Function
(默认: 自动判断 (xml 或 html)) 请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "notmodified" 和 "parsererror"。[Ajax 事件](http://docs.jquery.com/Ajax_Events "Ajax Events")。
[](javascript:void(0); "复制代码")
~~~
function (XMLHttpRequest, textStatus, errorThrown) {
// 通常 textStatus 和 errorThrown 之中
// 只有一个会包含信息
this; // 调用本次AJAX请求时传递的options参数
}
~~~
[](javascript:void(0); "复制代码")
#### global Boolean
(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的[Ajax 事件](http://docs.jquery.com/Ajax_Events "Ajax Events")。
#### headers map
~~~
Default: {}
~~~
一个额外的"{键:值}"对映射到请求一起发送。此设置被设置之前beforeSend函数被调用;因此,消息头中的值设置可以在覆盖beforeSend函数范围内的任何设置。
#### ifModified Boolean
(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。在jQuery 1.4中,他也会检查服务器指定的'etag'来确定数据没有被修改过。
#### isLocal map
默认: 取决于当前的位置协议
允许当前环境被认定为“本地”,(如文件系统),即使jQuery默认情况下不会承认它。以下协议目前公认为本地:file, \*-extension, and widget。如果isLocal设置需要修改,建议在$.ajaxSetup()方法中这样做一次。
#### jsonp String
在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。
#### jsonpCallback String
为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。
#### mimeType String
一个mime类型用来覆盖XHR的 MIME类型。
#### password String
用于响应HTTP访问认证请求的密码
#### processData Boolean
(默认: true) 默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
#### scriptCharset String
只有当请求时dataType为"jsonp"或"script",并且type是"GET"才会用于强制修改charset。通常只在本地和远程的内容编码不同时使用。
#### statusCode map
默认: {}
一组数值的HTTP代码和函数对象,当响应时调用了相应的代码。例如,如果响应状态是404,将触发以下警报:
[](javascript:void(0); "复制代码")
~~~
$.ajax({
statusCode: {404: function() {
alert('page not found');
}
});
~~~
[](javascript:void(0); "复制代码")
#### success(data, textStatus, jqXHR) Function,Array
请求成功后的回调函数。参数:由服务器返回,并根据dataType参数进行处理后的数据;描述状态的字符串。还有 jqXHR(在jQuery 1.4.x的中,XMLHttpRequest) 对象 。在jQuery 1.5, 成功设置可以接受一个函数数组。每个函数将被依次调用。
~~~
function (data, textStatus) {
// data 可能是 xmlDoc, jsonObj, html, text, 等等...
this; // 调用本次AJAX请求时传递的options参数
}
~~~
#### traditional Boolean
如果你想要用传统的方式来序列化数据,那么就设置为true。请参考工具分类下面的jQuery.param 方法。
#### timeout Number
设置请求超时时间(毫秒)。此设置将覆盖全局设置。
#### type String
(默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
#### url String
(默认: 当前页地址) 发送请求的地址。
#### username String
用于响应HTTP访问认证请求的用户名
#### xhr Function
需要返回一个XMLHttpRequest 对象。默认在IE下是ActiveXObject 而其他情况下是XMLHttpRequest 。用于重写或者提供一个增强的XMLHttpRequest 对象。这个参数在jQuery 1.3以前不可用。
#### xhrFields map
一对“文件名-文件值”在本机设置XHR对象。例如,如果需要的话,你可以用它来设置withCredentials为true的跨域请求。
### 5.6、AJAX示例
### 描述:
加载并执行一个 JS 文件。
##### jQuery 代码:
[](javascript:void(0); "复制代码")
~~~
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});
~~~
[](javascript:void(0); "复制代码")
### 描述:
保存数据到服务器,成功时显示信息。
##### jQuery 代码:
[](javascript:void(0); "复制代码")
~~~
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
~~~
[](javascript:void(0); "复制代码")
### 描述:
装入一个 HTML 网页最新版本。
##### jQuery 代码:
[](javascript:void(0); "复制代码")
~~~
$.ajax({
url: "test.html",
cache: false,
success: function(html){
$("#results").append(html);
}
});
~~~
[](javascript:void(0); "复制代码")
### 描述:
同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。
##### jQuery 代码:
~~~
var html = $.ajax({
url: "some.php",
async: false
}).responseText;
~~~
### 描述:
发送 XML 数据至服务器。设置 processData 选项为 false,防止自动转换数据格式。
##### jQuery 代码:
[](javascript:void(0); "复制代码")
~~~
var xmlDocument = [create xml document];
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,
success: handleResponse
});
~~~
[](javascript:void(0); "复制代码")
# 六、视频与资料下载
本来想一点一点写完的,不过后面录了比较全的视频,大家可以边看视频边参考示例练习:
下载较新版的jQuery:下载[jQuery1.11.3帮助与库](http://files.cnblogs.com/files/best/jQuery1.11.3%E5%BA%93%E4%B8%8E%E5%B8%AE%E5%8A%A9.rar)
下载最新版的jQuery:[下载jQuery1.12.4库](https://www.cnblogs.com/best/p/%E4%B8%8B%E8%BD%BDjQuery1.12.4%E5%BA%93)
示例下载:[jQuery视频配套示例](http://download.csdn.net/detail/zhangguo5/9783738)
视频下载:[https://pan.baidu.com/s/1hsJtb0K](https://pan.baidu.com/s/1hsJtb0K)密码: m7bt
IDE HBuilder下载地址:[http://www.dcloud.io/](http://www.dcloud.io/)
[](https://pan.baidu.com/s/1hsJtb0K)
B站直接观看:[http://www.bilibili.com/video/av9205766/?from=search&seid=5595908124286890857](http://www.bilibili.com/video/av9205766/?from=search&seid=5595908124286890857)
[](http://www.bilibili.com/video/av9205766/?from=search&seid=5595908124286890857)
# 七、作业
## 7.1、DOM大作业

## 7.2、AJAX大作业

## 7.3、jQuery UI大作业
自学一个基于bootstrap的UI框架,如layui
将7.2的AJAX大作业整合到UI中,UI框架类型不限
[http://www.layui.com/](http://www.layui.com/)
[https://www.cnblogs.com/best/p/5782891.html](https://www.cnblogs.com/best/p/5782891.html)

# 八、上课示例与本章视频
## 8.1、示例源代码
[https://git.coding.net/zhangguo5/jQuery143.git](https://git.coding.net/zhangguo5/jQuery143.git)
## 8.2、视频
[https://www.bilibili.com/video/av24045348/](https://www.bilibili.com/video/av24045348/)


# 九、其它
## 9.1、javascript对象与each
代码:
[](javascript:void(0); "复制代码")
~~~
<script type="text/javascript">
var app={
data:[
{id:1,name:"张学友",city:"中国香港"},
{id:2,name:"张国立",city:"中国北京"},
{id:5,name:"张惠妹",city:"中国上海"}
],
start:function(){
$.each(app.data,function(index,obj){
console.log(obj.id+","+obj.name);
console.log(obj)
});
}
};
app.start();
</script>
~~~
[](javascript:void(0); "复制代码")
结果:

## 9.2、新增用户
[](javascript:void(0); "复制代码")
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM</title>
</head>
<body>
<h2>DOM-用户管理</h2>
<table border="1" id="tabUsers" width="100%">
<tr>
<th>编号</th>
<th>姓名</th>
<th>城市</th>
<th>操作</th>
</tr>
</table>
<fieldset>
<legend>用户信息</legend>
<p>
<label for="name">姓名:</label>
<input type="text" name="name" id="name" placeholder="请输入姓名" />
</p>
<p>
<label for="city">城市:</label>
<input type="text" name="city" id="city" placeholder="请输入城市" />
</p>
<p>
<button type="button" id="btnSave">保存</button>
<button type="button" id="btnUpdate">更新</button>
</p>
</fieldset>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
var app = {
data: [{
id: 1,
name: "张学友",
city: "中国香港"
},
{
id: 2,
name: "张国立",
city: "中国北京"
},
{
id: 5,
name: "张惠妹",
city: "中国上海"
}
],
bind: function() { //将数组中的数据渲染到页面中
//将表格中第一行以外的数组清空
$("#tabUsers tr:gt(0)").remove();
$.each(app.data, function(i, obj) {
var tr = $("<tr/>");
$("<td/>").html(obj.id).appendTo(tr);
$("<td/>").html(obj.name).appendTo(tr);
$("<td/>").html(obj.city).appendTo(tr);
$("<td/>").html("<a>删除</a>").appendTo(tr);
//在#tabUsers元素中追加子元素tr
$("#tabUsers").append(tr);
});
},
save:function(){ //新增
var user={
id:1,
name:$("#name").val(),
city:$("#city").val()
};
if(app.data.length>0){ //如果数组中有数据
user.id=app.data[app.data.length-1].id+1;
};
app.data.push(user); //将user对象添加到数组的末尾
//重新渲染
app.bind();
},
start: function() {
//绑定事件
$("#btnSave").click(app.save);
app.bind();
}
};
app.start();
</script>
</body>
</html>
~~~
[](javascript:void(0); "复制代码")
结果:

## 9.3、删除与多删除
代码:
[](javascript:void(0); "复制代码")
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM</title>
</head>
<body>
<h2>DOM-用户管理</h2>
<table border="1" id="tabUsers" width="100%">
<tr>
<th>
<input type="checkbox" id="chbAll" />
</th>
<th>编号</th>
<th>姓名</th>
<th>城市</th>
<th>操作</th>
</tr>
</table>
<p>
<button type="button" id="btnDelSelected">删除选择项</button>
</p>
<fieldset>
<legend>用户信息</legend>
<p>
<label for="name">姓名:</label>
<input type="text" name="name" id="name" placeholder="请输入姓名" />
</p>
<p>
<label for="city">城市:</label>
<input type="text" name="city" id="city" placeholder="请输入城市" />
</p>
<p>
<button type="button" id="btnSave">保存</button>
<button type="button" id="btnUpdate">更新</button>
</p>
</fieldset>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
var app = {
data: [{
id: 1,
name: "张学友",
city: "中国香港"
},
{
id: 2,
name: "张国立",
city: "中国北京"
},
{
id: 5,
name: "张惠妹",
city: "中国上海"
}
],
bind: function() { //将数组中的数据渲染到页面中
//将表格中第一行以外的数组清空
$("#tabUsers tr:gt(0)").remove();
$.each(app.data, function(i, obj) {
var tr = $("<tr/>");
var chbItem = $("<input type='checkbox' name='chbItem'/>").data("index", i);
$("<td/>").append(chbItem).appendTo(tr);
$("<td/>").html(obj.id).appendTo(tr);
$("<td/>").html(obj.name).appendTo(tr);
$("<td/>").html(obj.city).appendTo(tr);
//创建一个删除元素,在元素中隐藏数据index,对应了数组中的索引
var aDel = $("<a href='#' class='del'>删除</a>").data("index", i);
$("<td/>").append(aDel).appendTo(tr);
//在#tabUsers元素中追加子元素tr
$("#tabUsers").append(tr);
});
},
save: function() { //新增
var user = {
id: 1,
name: $("#name").val(),
city: $("#city").val()
};
if(app.data.length > 0) { //如果数组中有数据
user.id = app.data[app.data.length - 1].id + 1;
};
app.data.push(user); //将user对象添加到数组的末尾
//重新渲染
app.bind();
},
deleteOne:function(obj){ //根据一个元素删除当前行
var index = $(obj).data("index");
//index表示删除的起始位置,1表示删除几个
app.data.splice(index, 1);
//更新页面
//app.bind();
$(obj).closest("tr").remove(); //移除最近的tr父节点
},
deleteSelected:function(){ //多删除
var items=$("input[name=chbItem]:checked");
for(var i=items.size();i>=0;i--){
app.deleteOne(items[i]);
}
},
start: function() {
//绑定事件
$("#btnSave").click(app.save);
$("#tabUsers").on("click", ".del", function() {
if(confirm('您确定要删除吗?')) {
app.deleteOne(this);
}
});
$("#chbAll").click(function() {
$("input[name=chbItem]").prop("checked", $(this).prop("checked"));
});
//多删除
$("#btnDelSelected").click(app.deleteSelected);
app.bind();
}
};
app.start();
</script>
</body>
</html>
~~~
[](javascript:void(0); "复制代码")
结果:

- 空白目录
- 常用功能
- PHP中常用的header头部定义
- 压缩包下载1
- 压缩包下载2
- 文件下载
- php常用加密函数总结
- url请求参数加解密
- PHP操作大全
- 指定月份的第某个月
- PHP 数组和字符串互相转换实现方法
- php字符串截取的简单方法
- php 根据子分类循环获取其父级分类
- PHP文件操作功能函数大全
- PHP常用到的功能函数
- 自定义php常用函数110个
- 自定义PHP常用功能函数
- 开发中常用自定义小功能函数
- PHP判断远程文件是否存在
- PHP写文件函数
- PHP生成GUID的函数
- PHP常用正则表达式汇总
- php字符串压缩
- PHP无限分组
- PHP简单 对象(object) 与 数组(array) 的转换
- PHP数组常用函数
- PHP调式测试函数
- PHP常用字符串的操作函数
- mysql 常用内置函数
- PHP通用请求函数CURL封装
- 裁剪图片PHP代码
- PDO操作MYSQL封装类
- 10个实用的PHP代码片段
- 获取访问者IP地址
- PHP实现发红包程序
- PHP把文本转换成图片
- curl重写php file_get_contents
- PHP生成一个随机字符串
- PHP读文件和写文件
- PHP根据key 给二维数组分组
- php中curl模拟post提交多维数组
- 33个超级有用必须要收藏的PHP代码样例
- PHP防XSS 防SQL注入的代码
- php常用数组array函数实例总结
- 用PHP遍历目录下的全部文件
- GBK2UTF8
- php函数类库
- 一、php一些常用的校验
- 1.1、校验是否为空(null/空串)1
- 1.2、校验是否为纯数字1
- 1.3、校验是否为纯数字(正则)1
- 1.4、检验手机号1
- 1.5、校验邮箱格式1
- 1.6、检查密码长度是否符合规定1
- 二、手机类型访问判断
- 三、字符集文件转换
- 3.1、utf8转gbk
- 3.2、gbk转utf8
- 3.3、繁体转简体
- 3.4、简体转繁体
- 3.5、unicode转utf8
- 3.6、utf8转unicode
- 3.7、Ascii转拼音
- 3.8、gbk转拼音
- 3.9、数组 utf8转gbk
- 3.10、数组 gbk转utf8
- 3.11、json 处理gbk转码utf-8问题( json_encode转换数组,值为null)
- 3.12、Unicode解码
- 四、文档目录操作
- 4.1、转化 \ 为 /
- 4.2、创建目录
- 4.3、拷贝目录及下面所有文件
- 4.4、转换目录下面的所有文件编码格式
- 4.5、列出目录下所有文件
- 4.6、设置目录下面的所有文件的访问和修改时间
- 4.7、目录列表
- 4.8、删除目录及目录下面的所有文件
- 4.9、取得文件扩展
- 4.10、查询字符是否存在于某字符串
- 4.11、获取文件目录列表
- 4.12、删除一个路径下的所有文件夹和文件的方法
- 4.13、文件下载
- 五、session与cookie
- 5.1、设置session
- 5.2、读取session
- 5.3、清除session
- 六、CURL操作
- 6.1、发起get请求
- 6.2、发起post请求
- 6.3、curl获取跳转后的网址的url
- 6.4、curl判断远程图片是否加防盗链
- 6.5、curl获取301页面的内容
- 6.6、curl判断文件是否存在(404)
- 6.7、php的curl封装类
- 七、日期、时间与字节转换
- 7.1、转换字节数为其他单位(Gb、Mb等)
- 7.2、时间转换(将秒转换为时间)
- 7.3、将秒转换成 天-时分秒
- 7.4、时间转换(将时分秒转换为秒)
- 7.5、计算两个时间相差的天
- 7.6、获取文件大小并格式化
- 7.7、返回13位时间戳
- 7.8、返回与当前时间的差距,如1分钟前,2小时前,5月前等
- 7.8、PHP中DateTime的常用方法
- 八、对象、数组、字符串、转义等
- 8.1、将数组转换为对象
- 8.2、将对象转换为数组
- 8.3、将字符串转换为数组
- 8.4、将数组转换为字符串
- 8.5、将文本格式成适合js输出的字符串
- 8.6、返回经addslashes(转义)处理过的字符串或数组
- 8.7、返回经stripslashes(删除反斜杠)处理过的字符串或数组
- 8.8、返回经htmlspecialchars(字符转html)处理过的字符串或数组
- 8.9、安全过滤函数
- 8.10、xss过滤函数
- 8.11、过滤ASCII码从0-28的控制字符
- 8.12、格式化文本域内容
- 8.13、将文本格式成适合js输出的字符串
- 8.14、转义 javascript 代码标记
- 8.15、数组转码
- 8.16、php用逗号格式化数字
- 8.17、数组去重
- 8.18、字符串去重
- 8.19、数组排序
- 九、加密扩展
- 9.1、简单的字符串加密、解密函数
- 9.2、简单的加密解密类
- 9.3、简单对称加密算法2
- 9.4、常用对称加密算法(DES/AES)类
- 9.5、3des加密解密类-三重数据加密算法
- 十、随机数、获取请求ip等
- 10.1、产生随机字符串
- 10.2、获取请求ip
- 10.3、生成一定范围内的随机数字
- 10.4、生成不重复的随机数
- 10.5、生成一定数量的随机数,并且不重复
- 10.6、生成32位随机数
- 10.7、生成9位随机数字(可以做qq用)
- 十一、其他
- 11.1、php对html页面压缩函数
- 11.2、构建层级(树状)数组、
- 11.3、获取内容中的图片
- 11.4、生成sql语句,如果传入$in_cloumn 生成格式为 IN('a', 'b', 'c')
- 11.5、打印各种类型的数据,调试程序时使用。
- 11.6、URL重定向
- 11.7、替换html代码里的所有图片的url,新增url
- 11.8、去除html里的p标签
- 11.9、去除字符串中所有html代码(格式化代码html)
- 11.10、将number_format的输出转换为php数字
- 11.7、内容里批量替换图片的url地址为自己的地址
- 十二、类库
- 1、php 5.6.3PHP封装的数据库模型Model类完整示例【基于PDO】
- 2、Curl类库
- 3、php PDO数据库类库
- 4、获取网站title
- 字符串配置转数组
- 数组助手类1
- 获取随机字符串
- 获取头像存储路径
- 单位转换函数
- 获取字符串长度
- 获取中文字符拼音首字母
- 获取当前页面URL地址
- 获取n天前的时间戳
- 获取n天前0点的时间戳
- 获取ip地址所在的区域
- 邮箱验证
- PHP常用函数总结(160多个)
- PHP判断输入数据是否合法常用的类
- 无限极分类
- php ajax实现分页功能
- 代码
- html
- sendAjax.js
- data.js
- page.js
- page.css
- php基础
- 字符串
- 字符串1
- 字符串常用函数
- 数组
- 数组简介
- 数组的定义
- 数组的操作
- 1 数组的计算
- 2 for循环遍历索引数组
- 3 foreach遍历关联数组
- 4 list、each函数遍历数组
- 5 常用操作数组函数
- 数组的常用函数
- 时间
- PHP的日期和时间
- 1 获取时期时间信息函数
- 2 日期验证函数
- 3 获取本地化时间戳函数
- 4 程序执行时间检测
- 文件操作
- 文件处理系统
- 1 读取文件
- 2 创建和修改文件内容
- 3 创建临时文件
- 4 移动、拷贝和删除文件
- 5 检测文件属性函数
- 6 文件常用函数和常量
- 7 文件锁处机制
- 8 目录处理函数
- 9 文件权限设置
- 10文件路径函数
- 11 小小文件留言本
- 12 修改配置文件的实例
- 流程控制
- 流程控制结构
- if条件结构流程
- 1 if语句
- 2 嵌套if...else...elseif结构
- 3 if语句多种嵌套
- 分支结构switch语句的使用
- 循环语句的使用
- 1 while循环
- 2 do...while循环的区别
- 3 for循环控制语句
- 4 goto语法
- 5 declare 语法
- 函数
- PHP函数
- 自定义函数
- 自定义函数高级调用
- 1 回调函数
- 2 变量函数
- 3 匿名函数
- 4 内部函数
- 5 变量作用域
- 6 参数的引用
- 7 递归函数
- 8 静态变量
- 使用系统内置函数
- 文件包含函数
- 数学常用函数
- 正则
- PHP正则表达式
- 1 正则表达示的定界符
- 2 正则表达示中的原子
- 3 正则表示中的元字符
- 4 正则达达示中的模式修正符
- 5 写正则的诀窍和常用正则
- 6 用正则写一个UBB文本编辑器
- 常用正则
- 错误处理
- 1 禁止显示错误
- 2 错误报告级别
- 3 错误记录日志
- 4 自定义错误处理函数
- 错误及异常处理机制、错误日志
- 过滤器
- 表达式
- PHP基本语法
- PHP基本语法(一)
- PHP基本语法(二)
- GD库图像处理
- 文件上传和下载
- PHP文件上传
- 1 文件上传需要注意php.ini文件
- 2 文件上传的步骤
- 3 文件上传表单注意事项
- 4 按照数组和步骤完成文件上传
- 5 多文件上传
- 6 文件上传进度处理
- PHP图像处理
- 1 学习前的准备工作
- 2 用图片处理函数画一张图
- 3 生成验证码
- 4 图像缩放和裁剪技术
- 5 图片水印处理
- 常量和变量
- 1 用常量限制用户跳过某些文件
- .2 可变变量
- 3 外部变量
- 4 环境变量
- 5 变量引用
- PHP表达式与运算符
- 1 算术运算
- 2 赋值运算
- 3 自加、自减运算
- 4 比较运算
- 5 逻辑运算
- 6 位运算
- 7 运算符优先级
- 8 三元运算符和其它运算符
- 会话管理和控制
- 1 Cookie概述
- 2PHP中的Cookie
- 3 session概述
- 4 PHP中使用session
- 5 SESSION应用实例
- 会话技术(cookie session)
- 会话技术 session场景使用介绍!
- PHP.in中session和cookie的配置说明
- 通过cURL来做小偷程序
- 1 curl的使用步骤
- 2 自定义get方法抓取网页
- 3 使用post发送数据
- PHP基础数据类型及运算符介绍
- 数据类型
- 1 整型就是整数
- 2 布尔就是易经的知识
- 3 字符串
- 4 浮点型
- 5 重要:if和else语法
- 6 NULL类型
- 7对象以后会学
- 8 数组会有单纯的一个章节
- 9 资源类型
- 10 眼前了解回调类型即可
- 11 查看和判断数据类型
- 12 数据类型的自动转换和强制转换
- PHP版本
- php自动加载
- xml的介绍
- openssl的介绍
- php文件管理
- 数据库Mysql
- 数据库之MySQL(概述)
- PHP数据库编程
- 数据库编程(2)
- SQL常见的可优化点
- Mysql设计与优化专题
- mysql的最佳索引攻略
- 详解慢查询
- ER图,数据建模与数据字典
- 数据中设计中的范式与反范式
- 字段类型与合理的选择字段类型
- 表的垂直拆分和水平拆分
- 21分钟 MySQL 入门教程
- 一、MySQL的相关概念介绍
- 二、Windows下MySQL的配置
- 三、MySQL脚本的基本组成
- 四、MySQL中的数据类型
- 五、使用MySQL数据库
- 六、操作MySQL数据库
- 七、创建后的修改
- 八、附录
- 3天入门MySQL
- 前言1
- 01. 数据库的用途和概念
- 02. 娱乐化讲解表关系
- 03. mysql 数据库安装
- 04. 数据语句操作类型
- 05. 连接数据库
- 06. 数据库结构定义语句
- 6.2 数据表操作
- 6.1 数据库操作
- 6.3 数据字段操作
- 07. 类型、字符集、引擎和索引
- 7.1 数据类型
- 7.2 字符集
- 7.3 表引擎
- 7.4 索引
- 08. 增删改查
- 12.8.1 插入记录
- 12.8.2 查询记录
- 12.8.3 多表联合查询
- 12.8.4 更新记录
- 12.8.5 删除记录
- 09. DCL语句
- 10. 常用工具简介
- 附录1 . 学习MySQL常用的英文单词
- MySQL 超新手入门
- (1) 重新开始
- (2) 数据库概论和 MySQL 安装
- (3) SELECT 基础查询
- (4) 运算式和函数
- (5) JOIN 和 UNION 查询
- (6) CRUD 和资料维护
- (7) 字符集和数据库
- (8) 存储引擎和数据类型
- (9) 表格和索引
- (10) 子查询
- (11) 视图
- (12) 预处理语句
- (13) 存储过程入门
- (14) 存储过程的变量和流程
- (15) 存储过程进阶
- (16) 触发器
- (17) 资料库资讯
- (18) 错误处理和查询
- (19) 导入和导出数据
- (20) 性能
- php常用类
- 面向对象
- 面向对象(OOP)编程完全教程
- 1.什么是面向对象
- 2.什么是类,什么是对象,类和对象这间的关系
- 3.什么是面向对象编程呢
- 4.如何抽象出一个类
- 5.如何实例化对象
- 6.如何去使用对象中的成员
- 7.特殊的引用this的使用
- 8.构造方法__construct()与析构方法__destruct()
- 9.封装性(var与public,protected,private的关系)
- 10.__set(),__get(),__isset(),__unset()四个方法的应用
- 11.类的继承
- 12.重载新的方法(parent::)
- 13.访问类型(public,protected,private)
- 14.final关键字的应用
- 15.static和const关键字的使用(self::)
- 16.__toString()方法
- 17.克隆对象__clone()方法
- 18.__call()处理调用错误
- 19.抽象方法和抽象类(abstract)
- 20.PHP5接口技术(interface)
- 21.多态的应用
- 22.把对象串行化serialize()方法,__sleep()方法,__wakeup()方法
- 23.自动加载类 __autoload()函数
- PHPer进阶
- 单例模式
- 工厂方法模式
- 适配器模式
- 建造者模式(通过选择mysql,mongo数据库链接类型做说明)
- 委托模式
- 对象基础实践
- 深入了解面向对象高级特性
- 抽象类和接口类的实际作用
- PHP解决问题进化论(整理笔记)
- PHP7新特性整理介绍篇
- php-fpm 与 Nginx优化总结
- Centos+Nginx+PHP7.0编译安装(和PHP5.6老版本共存)
- PHP7:Mongodb API使用
- PHP之include/require深入了解
- PHP内核了解:生命周期及运行模式
- 面向对象总结
- 基础概念
- 什么是类
- 什么是对象
- 静态属性
- 三大特征
- 封装
- 继承
- 多态
- 9个常用的魔术方法
- __construct
- __destruct
- __call
- __get
- __set
- __sleep
- __toString
- __clone
- __autoload
- 抽象类
- 对象接口
- 面向对象设计模式
- 前言
- (一),单例模式
- (二),Builder模式
- (三),原型模式
- (四),工厂方法模式
- (五),策略模式
- (六),状态模式
- (七),观察者模式
- (八),责任链模式
- (九),适配器模式
- (十),代理模式
- (十一),装饰模式
- (十二),外观模式
- (十三),解释器模式
- PHP开发第一步,PHP5.6 + MySQL5.5 + Apache2.4环境搭建
- 面向对象1
- 类和对象
- 面向对象高级
- php编程总结
- PHP学习笔记
- MySQL学习笔记
- php基础知识
- javascript
- javascript DOM总结
- JavaScript (JS) 函数补充 (含arguments、eval()、四种调用模式)
- JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)
- JavaScript (JS)基础:BOM 浅析 (含window对象相关基本方法、属性解析)
- JavaScript (JS)基础:DOM 浅析 (含数组Array、字符串String基本方法解析)
- JavaScript (JS)基础:ECMAScript 浅析 (含Math基本方法解析)
- js功能函数
- 一、js一些常用的校验
- 1.1、校验是否为空(null/空串)
- 1.2、校验是否为纯数字
- 1.3、校验是否为纯数字(正则)
- 1.4、检验手机号
- 1.5、验证座机号
- 1.6、校验ip
- 1.7、检验url地址
- 1.8、检验身份证
- 1.9、检验邮箱
- 1.10、检验日期
- 1.11、检验金额
- 1.12、检验否是汉字
- 1.13、校验数字的表达式
- 1.14、校验字符的表达式
- 1.15、特殊需求表达式
- 1.16、检测密码强度
- 二、手机类型判断
- 三、返回字符串长度,汉子计数为2
- 四、获取url中的参数
- 五、js 绑定事件 适用于任何浏览器的元素绑定
- 六、获得当前浏览器JS的版本
- 七、获取当前点击事件的Object对象
- 八、字符串截取方法
- 九、JS 弹出新窗口全屏
- 十、全选/全不选
- 十一、js 判断浏览器
- 十二、JS判断两个日期大小
- 十三、移除事件
- 十四、回车提交
- 十五、JS 执行计时器
- 十六、JS 写Cookie
- 十七、JS 读Cookie
- 十八、Ajax 请求
- 十九、JS StringBuilder 用法
- 二十、JS 加载到顶部LoadJS
- 二十一、清空 LoadJS 加载到顶部的js引用
- 二十二、JS 替换非法字符
- 二十三、按Ctrl + Entert 直接提交表单
- 二十四、获取当前时间
- 二十五、Js 去掉空格方法
- 二十六、js 动态移除 head 里的 js 引用
- 二十七、整个URL 点击事件 加在URL里的onclick里
- 二十八、判断浏览器使用的是哪个 JS 版本
- 二十九、加入收藏夹
- 三十、动态加载 CSS 样式文件
- 三十一、返回脚本内容
- 三十二、清除脚本内容
- 三十三、返回按ID检索的元素对象
- 三十四、显示元素 待验证
- 三十五、与insertBefore方法(已存在)对应的insertAfter方法
- 三十六、光标停在文字的后面,文本框获得焦点时调用
- 三十七、检验URL链接是否有效
- 三十八、格式化CSS样式代码
- 三十九、压缩CSS样式代码
- 四十、 获取当前路径
- 四十一、ip 转 整型
- 四十二、整型解析为IP地址
- 四十三、删除cookies
- 四十四、判断是否以某个字符串结束
- 四十五、判断是否以某个字符串开头
- 四十六、根据样式名称检索元素对象
- 四十七、 获取移动设备初始化大小
- 四十八、 获取移动设备最大化大小
- 四十九、获取移动设备屏幕宽度
- 五十、获取页面scrollLeft
- 六十、获取页面宽度
- 六十一、获取页面scrollTop
- 六十二、获取页面可视高度
- 六十三、判断数组元素是否重复
- 六十四、生成随机数
- 六十五、数组去重
- 六十六、深度拷贝对象
- 六十七、全部替换replaceAll
- 六十八、阻止冒泡
- 六十九、返回顶部
- 七十、jsonp跨域请求
- 七十一、到某一个时间的倒计时
- 七十二、清除对象中值为空的属性
- 七十三、获取文件后缀名的方法
- 七十四、判断一个对象是不是数组类型
- 七十五、冒泡排序
- 七十六、实现一个最简单的模板引擎
- 七十七、数组最大值最小值
- 七十八、数组求和,平均值
- 七十九、从数组中随机获取元素
- 八十、返回对应元素在数组中的下标
- 八十一、返回数组(字符串)一个元素出现的次数
- 八十二、得到n1-n2下标的数组,即返回数组下标arr[n1]到数组arr[n2]的值
- 八十三、筛选数组,这里所做的就只是删除相应的数组
- 八十四、去除字符串空格
- 八十五、字母大小写切换
- 八十六、字符串循环复制,前面的要循环的字符串,后面的要循环的次数
- 八十七、字符串替换,这里的要替换的字符串必须是连续的
- 八十九、将时间戳转换成日期格式
- 九十、检验字符串是否超过某个值,超出出现省略号
- 九十一、随机码,这里的参数count必须是 2 ~ 36 之间的整数
- 九十二、查找字符串中某字符出现的次数
- 九十三、JS插入排序
- 九十四、获取前num天的日期
- 九十五、js实时计算rem,宽度大于1920px时1rem=100px
- 九十六、原生JS获取鼠标XY轴的值
- 九十七、转成XML对象
- 九十八、Js身份证验证函数
- 九十九、格式化数字串
- 一百、原生Ajax 请求
- 一百零一、两条直角边算角度
- 一百零二、禁止readonly和disabled的input退格键返回上一页
- 一百零三、生成随机字母字符串
- 一百零四、float偏移处理
- 一百零五、根据月份获取起止时间戳
- 一百零六、工具函数对象书写例子,可自己扩展
- 一百零七、js字符串压缩算法与解压
- 一百零八、指定数组元素排序(正序倒序)
- 一百零九、js所有的内置方法
- JavaScript 常用函数总结
- js常用函数整理
- JavaScript基础
- javaScript基础&DOM(一)
- javaScript基础&DOM(二)
- JavaScript语法基础1
- javascript数组对象
- javascript字符串函数
- jquery、javascript实现(get、post两种方式)跨域解决方法
- php MVC原理
- php基础知识(语法与原理)
- PHP编程经验
- 第一章 代码风格
- 第二章 代码注释
- 第三章 目录结构
- 第四章 文件管理
- 第五章 代码整理
- 第六章 路径和路由
- 第七章 实用表格
- 第八章 实用开发软件
- 第九章 技术提升心得
- 第十章 实用插件搭配
- 第十一章 常用设计模式
- PHP编码规范文档
- PHP加快执行效率的写法规范
- VUE避坑指南
- 从零开始学Vue
- Vue-cli
- PHP工具类
- 数组助手类
- 通用助手类
- 时间助手类
- 图像
- 拼音助手类
- 字符串助手类
- 验证助手类
- 时间类封装
- 数据库链式调用封装
- curl 封装 / 发送文件 / 远程下载到服务器
- php Captcha 驗證碼類
- php 替换敏感字符串
- php返回数据格式化类
- php XML文件解释类
- php CSS Update Class
- PHPMailer - PHP email transport class
- PHP 遍历文件夹及文件类及处理类
- 自动登入google play下载app report
- php click captcha 验证码类
- php 获取页面中的指定内容类
- php 支持断点续传的文件下载类
- php 缩略图生成类,支持imagemagick及gd库两种处理
- php 根据url自动生成缩略图
- php 过滤html标记属性类
- php HTTP请求类,支持GET,POST,Multipart/form-data
- php Cookies 操作类
- php 密码生成类
- php main 与 iframe 相互通讯类(同域/跨域)
- php 根据url自动生成缩略图,并处理高并发问题
- php Timer 页面运行时间监测类
- php 双向队列类
- php 导出CSV抽象类
- php zip文件内容比较类
- php 获取/设置用户访问页面语言类
- php 获取Youtube某个User所有Video信息
- php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换
- php 版本处理类
- TP5
- 验证器
- 内置规则
- tp5数据库操作
- 数据添加或更新
- 静态增删改查 / 关联操作
- 日志操作
- 路由
- taglib-自制标签
- migrations 数据库迁移
- TP3.2
- 数据库操作
- 发送邮箱
- Tp6
- Redis
- 字符串 / 列表 / Hash / Set / Zet / 基数统计算法
- 队列 /订阅发布 php实例
- 事务 / bitmap 位图 / 地理位置
- 备份与恢复 / 性能测试
- 设置密码 / 模糊查询
- 性能优化
- php+redis实现高并发模拟下单、秒杀、抢购操作
- Redis 的简单介绍
- Redis 最常见的问题
- 扩展thinkphp5的redis类方法
- php for redis
- 前言11
- 字符串11
- 集合
- 有序集合
- 列表
- 哈希
- key操作
- Redis 基础教程
- 简介
- 递增
- 过期
- 列表1
- 集合1
- 可排序集合
- 哈希表
- Redis学习文档
- 序言
- 简介1
- Window 下安装
- 执行
- Linux 下安装
- 数据类型1
- String
- Hash
- List
- Set
- zset
- 区别和详解
- 命令
- Keys
- flushall
- del
- ping
- 设置密码
- 实例
- PHP+Redis 实例【一】点赞 + 热度
- Thinkphp+Redis
- 数据队列
- 字符串111
- 列表11
- 集合11
- 哈希1
- 有序集合1
- 添加redis函数助手
- 基础知识
- Redis的7个应用场景
- 深入解析Redis中常见的应用场景
- MongoDB和Redis的区别
- 相关书籍
- 函数整理
- redis知识总结
- redis学习文档
- 常用命令
- 运维常用命令
- 通用操作相关命令
- 字符串相关命令
- 链表list相关命令
- 集合set相关命令
- 有序集合相关指令
- 哈希hash
- 事务
- 订阅和发布
- rdb快照持久化
- aof日志持久化
- redis集群 主从配置
- sentinel监视
- key的设计
- Redis实践技巧
- 前言111
- 第1章 keys键操作
- 第2章 string类型
- 第3章 list类型
- 第4章 set类型
- 第5章 sort set排序类型
- 第6章 hash类型
- 第7章 redis备份
- 第8章 主从复制
- 第9章 设置密码
- 第10章 事务
- 第11章 php操作redis
- Redis常见7种使用场景(PHP实战)
- redis
- jQuery学习总结
- jquery总结2
- Git
- php微信接口开发
- php微信接口开发(卷一)
- 开发心得
- 申请微信测试号
- 打通服务器与微信之间的通信
- 接受微信发送的信息
- 回复微信发送的信息
- 微信回复单图文消息
- 微信回复多图文消息
- curl用法小测试
- 获取access_token
- 获取微信的media_id
- 微信回复图片消息
- 关注自动回复
- 微信生成自定义菜单
- 【实战】后台管理自定义菜单
- 1.页面数据提交并展示
- 2.组装一、二级菜单
- 3.完成简略自定义菜单
- 【实战】thinkphp框架开发微信接口
- 1.相关东西下载地址
- 2.配置thinkphp3.2.3
- 3.微信回复文本消息
- 4.微信获取个人基本信息
- php微信接口开发(卷二)
- 网页授权获取用户基本信息
- 1.输出回调地址
- 2.获取用户信息页面
- 3.数据写入数据库
- 用户分组接口的使用
- 1.对上节代码的优化处理
- 2.获取所有用户组
- 3.创建一个分组
- 4.查询指定用户的分组
- 群发消息的接口的使用
- 1.创建新控制器
- 2.预览群发消息接口
- 3.群发消息
- 生成带参数的二维码
- 长连接转短连接
- 微信js-SDK的引入
- 1.获取jsapi_ticket
- 2.判断当前客户端版本是否支持指定JS接口
- 图像接口的使用
- 扫一扫二维码接口
- php微信接口开发(卷三)
- 微信公众号
- 1.前提条件
- 2.微信公众平台需要做的设置
- 微信支付商户平台
- 1.操作证书
- 2.配置密钥
- 3.配置支付授权目录
- 公众号支付(Jsapi支付)
- 1.SDK与demo下载
- 2.测试DEMO
- 3.将支付接口更为真实公众号信息
- 微信商城
- 1.tp3+bootstrap使用实战
- 2.图片上传实战
- 3.商城后台实战
- 4.购买商城实战
- 5.下订单后使用微信支付
- 小程序基础
- 简介12
- 接入指南
- 开发者工具的使用
- 代码审核与发布
- 小程序申请微信认证
- 小程序申请微信支付
- 小程序绑定微信开放平台帐号
- app.json配置
- 配置demo
- pages
- window
- tabBar
- networkTimeout
- debug
- page.json
- API
- 发起网络请求
- 网络请求提交表单
- 引入
- WeUI
