day01: 基础 -- 选择器、属性和 CSS 、文档处理
day02: 高级 -- 筛选、事件、效果、 ajax
当前流行的 JavaScript 库有:
jQuery ,最流行
EXT_JS , 2.0 开始收费
Dojo ,很多 js 单独文件,优化:打包。(常见:开发小图标,一张图片)
Prototype ,对 js 扩展,框架开发。
YUI(Yahoo! User Interface) , taobao 之前使用。
淘宝 UI : http://docs.kissyui.com/
Bootstrap ,来自 Twitter ,是目前很受欢迎的前端框架。 Bootstrap 是基于 HTML 、 CSS 、 JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。基于 jQuery 一个 UI 工具
jQuery 介绍
JQuery 是继 prototype 之后又一个优秀的 Javascript 库。它是 轻量级 的 js 库 ,它兼容 CSS3 ,还兼容 各种浏览器 ( IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.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.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 让开发者编写插件,有许多成熟的插件可供选择
文档说明很全
< script type ="text/javascript">
//js 执行时,有加载顺序
/* jQuery 获得数据
* * 语法: $(" 选择器 ") == jQuery(" 选择器 ")
*
*/
var username = $( "#username" );
// * val() 函数 用于获得 value 属性的值
alert( username. val());
script >
jQuery 对象和 dom 对象转换
< script type ="text/javascript">
//1 使用 javascript 获得 value 值
var username = document. getElementById( "username" );
//alert(username.value);
//2 将 dom 对象 转换 jQuery 对象
// * 语法: $(dom 对象 )
// * 建议: jQuery 对象变量名,建议为 $ 开头
var $username = $( username);
// alert($username.val());
//3 将 jQuery 对象 转换 dom 对象
//3.1 jQuery 对象内部使用【数组】存放所有的数据,可以数组的下标获取(索引)
var username2 = $username[ 0 ];
alert( username2. value);
//3.2 jQuery 提供函数 get() 转换成 dom 对象
var username3 = $username. get( 0 );
alert( username3. value);
script >
#id , id 选择器, 通过 id 值获得元素
element ,标签选择器, 通过标签名获得元素
. class ,类选择器, 通过 class 值获得元素。注意:使用点开头
s1,s2,... 多选择器,将多个选择器的结果添加一个数组中。
--------------------------------------------
* 所有
层级
A B ,获得 A 元素内部所有的 B 后代元素。(爷孙)
A > B ,获得 A 元素内部所有的 B 子元素。(父子)
A + B ,获得 A 元素后面的第一个兄弟 B 。(兄弟)
A ~ B ,获得 A 元素后面的所有的兄弟 B 。(兄弟)
基本过滤
:first , 第一个
:last , 最后一个
:eq(index) ,获得指定索引
:gt(index) 大于
:lt(index) 小于
:even 偶数,从 0 开始计数。例如:查找表格的 1 、 3 、 5... 行(即索引值 0 、 2 、 4... )
:odd 奇数
:not(selector) 去除所有与给定选择器匹配的元素
------------------------------
:header 获得所有标题元素。例如: ...
:animated 获得所有动画
:focus 获得焦点
内容过滤
:empty 当前元素是否为空(是否有标签体 -- 子元素、文本)
:has(...) 当前元素,是否含有指定的子元素
:parent 当前元素是否是父元素
:contains( text ) 标签体是否含有指定的文本
可见性过滤 [ 掌握 ]
:hidden 隐藏。特指 ,获得
:visible 可见(默认)
属性【掌握】
[ 属性名 ] 获得指定的属性名的元素
[ 属性名 = 值 ] 获得属性名 等于 指定值的 的元素【 1 】
[ 属性名 != 值 ] 获得属性名 不等于 指定值的 的元素
[as1][as2][as3].... 复合选择器,多个条件同时成立。类似 where ...and...and 【 2 】
---------------------------------------
[ 属性名 ^= 值 ] 获得以属性值 开头 的元素
[ 属性名 $= 值 ] 获得以属性值 结尾 的元素
[ 属性名 *= 值 ] 获得 含有属性值 的元素
子元素过滤
:nth-child(index) ,获得第几个孩子,从 1 开始。
:first-child , 获得第一个孩子
:last-child , 获得最后孩子
:only-child , 获得独生子
表单过滤
:input 所有的表单元素。( / / )
:text 文本框
:password 密码框
:radio 单选
:checkbox 复选框
:submit 提交按钮
:image 图片按钮
:reset 重置按钮
:file 文件上传
:hidden 隐藏域 ,还可以获得
其他值: , 存在浏览器兼容问题
:button 所有普通按钮。 或
表单对象属性过滤【掌握】
:enabled 可用
:disabled 不可用。 或 或
:checked 选中(单选框 radio 、复选框 checkbox )
:selected 选择(下拉列表 select option )
attr(name) 获得指定属性名的值
attr(key ,val ) 给一个指定属性名设置值
attr(prop ) 给多个属性名设置值。参数: prop json 数据
{k : v , k : v , .....}
removeAttr(name) 移除指定属性
CSS 类
addClass("my") 追加一个类
removeClass("my") 将指定类移除
toggleClass("my") 如果有 my 将移除,如果没有将添加。
HTML 代码 / 文本 / 值【掌握】
val() 获得 value 的值
val(text) 设置 value 的值
html() 获得 html 代码,含有标签
html(...) 设置 html 代码,如果有标签,将进行解析。
text() 获得文本值,将标签进行过滤
text(...) 设置文本值,如果有标签,将被转义 --> < < & & > <
CSS
css(name) 获得指定名称的 css 值
css(name ,value) 设置一对值
css(prop) 设置一组值
位置
offset() 获得坐标 , 返回 JSON 对象, {"top":200, "left" : 100}
offset(...) 设置坐标。例如: $(this).offset({"top":0 , "left" : 0})
scrollTop() 垂直滚动条 滚过的距离
scrollLeft() 水平滚动条 滚过的距离
尺寸
height([...]) 获得 或 设置 高度
width([...]) 获得 或 设置 宽度
A.append(B) 将 B 插入到 A 的内部后面(之后的串联操作,操作 A )
....
A.prepend(B) 将 B 插入到 A 的内部前面
....
--------------------------------------------
A.appendTo(B) 将 A 插入到 B 的内部后面 (之后的串联操作,操作 A )
A.prependTo(B) 将 A 插入到 B 的内部前面
外部插入【掌握】
A.after(B) , 将 B 插入到 A 后面(同级)
A.before(B) ,将 B 插入到 A 前面
-----------------------------------
A.insertAfter(B) , 将 A 插入到 B 后面(同级)
A.insertBefore(B) 将 A 插入到 B 前面
删除 [ 掌握 ]
empty() 清空标签体
remove() 删除当前对象。如果之后再使用,元素本身保留,绑定事件 或 绑定数据 都会被移除
detach() 删除当前对象。如果之后再使用,元素本身保留,绑定事件 或 绑定数据 都保留
data(name) 获得
data(name,value) 设置
复制
clone() 克隆
even :指示事件处理函数是否会被复制。 V1.5 以上版本默认值是: false
替换
A.replaceWith(B) ,使用 A 将 B 替换掉
A.replaceAll(B) ,使用 B 将 A 替换掉
包裹
A.wrap(B) ,使用 B 将每一个 A 进行包裹(多个 B )
A.wrapAll(B) ,使用 B 将所有 A 进行包裹(一个 B )
A.wrapInner(B) , 使用 B 将每一个 A 的标签体包裹。
A.unwrap() ,将 A 的父元素删除,自己留着