它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera9.0+), jQuery2.0及后续版 本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画 效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可。
轻量级:依赖程序少,占用的资源的少特点:js代码和html代码分离
jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
由美国人John Resig在2006年1月发布
jQuery是免费、开源的
jQuery分类:
WEB版本:我们主要学习研究
UI版本:集成了UI组件
mobile版本:针对移动端开发
qunit版本:用于js测试的
1.5优点
消除了很多跨浏览器的兼容性问题。
比javascript代码量要少。
核心理念是write less,do more(写得更少,做得更多)轻量级:源码1.11.js大小是286kb,压缩班1.11.min.js大小是94.1k。如果使用GZIP压缩更小。
兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)
jQuery的语法设计可以使开发者更加便捷
例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能
jQuery能够使用户的html页面保持代码和html内容分离
不用再在html里面插入一堆js来调用命令了,只需要定义id即可
jQuery提供API让开发者编写插件,有许多成熟的插件可供选择
文档说明很全
书写规范:
1.总是使用分号。
2.常量使用大写,每个单词之间用一个下划线分隔
3.函数,变量和方法名都采用驼峰拼写法,并且将整个变量名的第一个字母小写
4.类和枚举名采用驼峰拼写法,但整个变量名第一个字母大写
5.相等性:总是使用等同(===)进行比较:
(==)操作符是危险的,因为它在执行比较之前,强制执行类型转换
if(userName ===null || userName ===undefined){}
6.以块方式组织代码:对于控制结构[if/else/for/while/try]总是使用花括号,并且总是以多行的代码块方式来编写。不使用没有花括号的单行if语句。
7.字符串:使用双引号而不是单引号
8.打印日志:console.log();console.debug();console.clear();
9.声明变量的方式:
i= 0;//隐式声明var i =0;//显示声明
var x;//undefined
10.作用域:
1.作用域(scope)指的是变量或对象的可见范围。全局变量(global)在应用中的任何地方都可见,而局部变量(local)仅在声明该变量的函数内可见。
2.隐式声明的变量总是具有全局作用域,即使该变量是在某个函数体中声明的。
11.变量名必须以一个字母,下划线或美元符号开头,后跟0个或多个字母数字字符,下划线或美元符号。不能使用关键字。
12.理解对象:对象是属性的集合,每一个属性具有一个名称和一个值。
var userInfo = new UserInfo();
13.eval():可以接受一个字符串,并将其市委javascript代码执行。应该限制eval()函数的使用,它很容易在代码中引入各种各样严重的安全问题。
14.队列是一种先进先出的数据结构,队列总是将元素添加到队列的尾部,移除元素时则总是从队列的头部开始。
15.采用链式操作,除了可读性更好,还具有更好的性能
16.要获取或设置元素的内容【两种方法】及区别:
第一种方法使用.text()方法。
第二种方式使用.html()方法。它的用法与.text()方法一样:当调用不带参数的.html()方法时,获取的元素的内容;当调用带参数的.html()方法时,设置元素的内容。区别:
1 .text()方法即可用于xml文档,也可用于HTML文档,而.HTML()只能用于HTML文档。
2 .text()将获取所有后代元素的文本内容,而.HTML()方法仅获取匹配的第一个元素的文本内容
var content = $("p").text();
var content = $("p").text("change text");
var content = $("p").html();
var content = $("p").html("change html");
17.jquery 可以在运行时动态插入dom元素,所以,想在还不存在的元素上绑定一个时间,.bind()方法将不再有效。
.live()方法,不论元素是否已存在都可以绑定一个事件。销毁的方法为:.die()方法。
.live()方法无法链接调用,如果想链接调用,则可以用delegate()方法代替.live()方法。销毁的方法:undelegate()方法。
$(function(){
$("#anchor").live("click",function(){
alert("xiaopangzi i miss you");
});
$("#sub").bind("click",function(){
//在该元素内部添加
$("#divA").append("<a href='#' id='anchor'>button</a>");
//在该元素之前添加
$("#divA").before("<a href='#' id='anchor'>button</a>");
//在该元素之后添加
$("#divA").after("<a href='#' id='anchor'>button</a>");
});
//仅执行一次追加
$("#sub").one("click",function(){ });
//链式事件编程
$("#text").mouseover(function(){
$(this).css("color","red");
}).mouseout(function(){
$(this).css("color","green");
});
})
<div id="divA" style="width:300px;height:100px;border:1px solid red;">a</div>
<input type="button" value="submit" id="sub"/>
18.$.offset()方法,它返回一个包含数值类型的left值和top值的对象,指出元素相对于文档的位置。
默认值:fast:200毫秒 slow:600毫秒
var pos = $(this).offset();
$("div#message").slideUp('fast');$("div#message").slideDown('fast');
19.绑定事件,解除事件: on 等于bind时间
$(function(){
$(".subBtn").bind('mouseover',function(){
});
$("subBtn").on("click",function(){
console("eq bind method");
});
})
类型检查:
对象 | 类型检查表达式 |
String | Typeof object ===”string” |
Number | Typeof object ===”number” |
Boolean | Typeof object ===”boolean” |
Element | Object.nodeType |
null | Object ===null |
Null 或undefined | Object ===null |
类型 | 描述 |
:animated | 选择当前正在执行动画的所有元素 |
:eq() | 选择索引等于指定值的元素 |
:even | 选择索引值为偶数的所有元素 |
:first | 选择第一个元素 |
:gt() | 选择索引大于指定值的元素 |
:header | 选择所有的标题元素,比如h1,h2 |
:last | 选择最后一个元素 |
:lt | 选择索引小于指定值的元素 |
:not | 选择与选择器不匹配的元素 |
:odd | 选择索引值为奇数的所有元素 |
表单元素过滤器
过滤器 | 描述 |
:button | 选择所有button元素和类型为button的元素 |
:checkbox | 选择所有类型为checkbox的元素 |
:checked | 匹配所有已被选中的元素 |
:disabled | 选择所有不可用元素 |
:enabled | 选择所有可用元素 |
:file | 选择所有类型为file的元素 |
:image | 选择所有类型为image的元素 |
:input | 选择所有input,textarea,select,button元素 |
:password | 选择所有类型为password的元素 |
:radio | 选择所有类型为radio 的元素 |
:reset | 选择所有类型为reset的元素 |
:selected | 选择所有已选中的元素 |
:submit | 选择所有类型为submit 的元素 |
:text | 选择所有类型为text的元素 |
子元素过滤器
选择器 | 描述 |
:first-child | 选择每个父元素的第一个子元素 |
:last-child | 选择每个父元素的最后一个子元素 |
:nth-child() | 选择每个父元素的第nth-child()个子元素 |
:only-child | 选择具有唯一一个子元素的元素 |
Jquery事件
.blur() | .mouseenter() |
.focus() | .mousemove() |
.select() | .mouseout() |
.submit() | .mouseover() |
.click() | .mouseup() |
.dblclick() | .toggle() |
.focusin() | .error() |
.focusout() | .resize() |
.hover() | .scroll() |
.mousedown() |
:not(selector) 去除所有与给定选择器匹配的元素
------------------------------
:header 获得所有标题元素。例如:<h1>...<h6>
:animated 获得所有动画
:focus 获得焦点
:empty 当前元素是否为空(是否有标签体--子元素、文本)
:has(...) 当前元素,是否含有指定的子元素
:parent 当前元素是否是父元素
:contains( text ) 标签体是否含有指定的文本
:hidden 隐藏。特指 <xxx style="display:none;"> ,获得 <input type="hidden">
:visible 可见(默认)
:nth-child(index) ,获得第几个孩子,从1开始。
:first-child , 获得第一个孩子
:last-child , 获得最后孩子
:only-child , 获得独生子
:input 所有的表单元素。(<input> / <select> / <textarea> / <button>)
:text 文本框<input type="text">
:password 密码框<input type=" password ">
:radio 单选<input type="radio">
:checkbox 复选框<input type="checkbox">
:submit 提交按钮<input type="submit">
:image 图片按钮<input type="image" src="">
:reset 重置按钮<input type="reset">
:file 文件上传<input type="file">
:hidden 隐藏域<input type="hidden"> ,还可以获得<xxx style="display:none">
其他值:<br> <option> ,存在浏览器兼容问题
:button 所有普通按钮。 <button > 或 <input type="button">
:enabled 可用
:disabled 不可用。<xxx disabled="disabled"> 或<xxx disabled=""> 或 <xxx disabled>
:checked 选中(单选框radio、复选框 checkbox)
:selected 选择(下拉列表 select option)
addClass("my") 追加一个类
removeClass("my") 将指定类移除
toggleClass("my") 如果有my将移除,如果没有将添加。
empty() 清空标签体
remove() 删除当前对象。如果之后再使用,元素本身保留,绑定事件 或 绑定数据 都会被移除
detach() 删除当前对象。如果之后再使用,元素本身保留,绑定事件 或 绑定数据 都保留