天天看点

学习JQuery

1. 重要基础

  1. 简写加载函数,事情必须在DOM加载之后,否则无法绑定对象
$(document).ready()
$(function(){}); //推荐缩写           
  1. 使用包括 JQuery 库外语法类似的 JavaScript 库时,注意命名冲突
Jquery.noConflict() 
var 
$$
 = JQuery; //换成 
$$
 调用Jquery函数           

2. 基础选择器

(选择器使用css1,css2的全部选择器语法,以及部分css3语法。)

  1. 对 id 元素使用选择器: 默认对第一个元素外的其他元素"失明",返回第一个对象。
  2. 调用属性 .length 或函数 .size() 查看对象集合的数量
  3. 获取对象集合里的元素 .get(0) 或加下标 [0]
  4. 群组选择器: 逗号列举
$("label, #text, .blue")           
  1. 后代选择器
$("#nav h4 span")
$("#nav").find("h4").find("span")           
  1. 子代选择器(只能是直接的父子关系)
$("#nav > span")
$("#nav").children("span")           
  1. 获取 span 的下一个同级兄弟元素 p
$("div span + p")
$("div span").next()           
  1. 获取 span 以下的所有同级兄弟元素 p
$("div span ~ p")
$("div span").nextAll("p")           
  1. 同级向上(向下)选取元素,直到找到 label 元素为止(不包括 label 元素)
.prevUntil("label") //向上
.nextUntil("label") //向下           
  1. 寻找同级兄弟
.siblings("input")
.prevAll() 加上 .nextAll()           

3. 过滤选择器

  1. 第一个(最后一个)元素
:first
:last           
  1. 排除满足条件的元素
.not(.blue)           
  1. 奇(偶)序元素
:odd
:even           
  1. 等于/大于/小于
:eq(2)
:gt(3)
:lt(5)           
  1. 标题元素(h1 ~ h6)
:header           
  1. 正在执行动画的元素
:animated           
  1. 正被聚焦的元素
:focus           
  1. 包含指定文本的元素
:contains(".com")           
  1. 不包含文本或者无子元素的元素
:empty           
  1. 包含文本或子元素的元素
:parent           
  1. 具有指定类的元素
:has(".blue")           
  1. 不可见(可见)的元素
:hidden
:visible           
  1. 每个父元素的第一个(最后一个)子元素
:first-child
:last-child           
  1. 只有一个子元素的元素
:only-child           
  1. 每个指定子元素的元素
:nth-child(odd)           
  1. 匹配的元素
.is(".bule")
.hasClass("blue")
.filter(".blue")
.slice(1, 4) //第二个到第四个元素           

4. 表单选择器

  1. 选择指定元素
:input
:button           
  1. 选择不同类型的input元素
:text
:password
:radio
:checkbox
:submit
:reset
:image
:button
:file
:hidden           
  1. 选择不同属性的元素
:enabled
:disabled
:checked
:selected           

5. 基本 DOM 操作

  1. 获取(设置)元素html内容
.html() //加参数则设置           
  1. 获取(设置)元素文本内容
.text() //加参数则设置           
  1. 获取(设置)表单元素内容
.val() //加参数则设置           
  1. 获取(设置)元素属性值
.attr() //加参数则设置
.attr({A: a, B: b}) //设置多个参数           
  1. 获取(设置)css样式
.css() //加参数则设置,多参数设置同上           
  1. 添加css样式
.addClass("blue")
.addClass("blue red green")           
  1. 移除css样式
.removeClass("blue") //移除多个类同上           
  1. 切换css样式
.toggleClass("blue") //切换多个类同上
.toggleClass(function(){}, [rate]) //自定义切换规则,第二个为可选参数频率           
  1. 获取(设置)高度(宽度)
.height() //加参数则设置 
.width() //加参数则设置
.height(function(object, value){}) //object指定元素、value指定元素的高度           
  1. 获取内外边框高度宽度
.innerWidth()
.innerHeight()
.outerWidth() //包括边框和内边距
.outerHeight() //同上
.outerWidth(true) //同上并包括外边框
.outerHeight(true) //同上           
  1. 相对偏移
.offset() //相对于视口
.position() //相对于父元素           
  1. 滚动条相关(获取/设置)
.scrollTop() //垂直
.scrollLeft() //水平           

6. DOM节点操作

  1. 元素内部前面插入节点
.prepend(html) //插入节点html
.prepend(function(new, parent)) //向parent元素内部前面插入节点new
.prependTo(target) //将元素移至指定元素target           
  1. 元素内部后面插入节点
.append(html)
.append(function(new, parent){})
.appendTo(target)           
  1. 元素外部前面插入节点
.before()
.before(function(new, parent){})
.insertBefore(target)           
  1. 元素外部后面插入节点
.after()
.after(function(new, parent){})
.insertAfter(target)           
  1. 包裹节点
.wrap(target) //参数可为html内容或者对象节点
.wrap(function(target){})
.unwrap() //解除一层包裹                                                                                                                           
  1. 批量包裹
.wrapAll(parent) //被元素parent包裹
.wrapInner(parent) //包裹元素parent的子元素           
  1. 复制节点
.clone(true) //加上true表示同时复制绑定事件、不加则只复制元素和内容           
  1. 删除节点
.remove(‘p’) //可选参数           
  1. 保留事件行为的删除
.detach()           
  1. 删除节点内容
.empty()           
  1. 替换节点
.replaceWith('span')
.replaceAll('p')           

7. 基本事件

(以下函数均含匿名函数)

  1. 点击、双击
.click()
.dbclick()           
  1. 点击弹起瞬间、弹起后
.mouseup()
.mousedown()           
  1. 鼠标穿出入触发(包括子元素)
.mouseenter()
.mouseleave()           
  1. 鼠标穿出入触发(不包括子元素)
.mouseover()
.mouseout()           
  1. 鼠标移动
.mousemove()           
  1. 键盘按下弹起瞬间、弹起后
.keyup()
.keydown()
.keypress()           
  1. 焦点激活与丢失
.focus()
.blur()
.focusin()
.focusout()           
  1. 其他事件
.select() //文本选定
.change() //值被改变
.submit //表单提交
.scroll() //滚动条拖动
.unload() //卸载本页面
.hover(fun1, [fun2]) //鼠标移入(移出)           

8. 事件对象

(function(event){})

  1. 页面坐标(属性)
pageX //相对于页面
pageY
screenX //相对于显示屏
screenY
clientX //相对于视口
clientY           

9. 高级事件

  1. 模拟用户行为
.trigger("click", [param1, param2])
.trigger("click", [{paramA1 : a, paramA2 : b}, {paramB1, paramB2}])           
  1. 绑定(解绑)事件
.on("click dbclick", [function(){}])
.off("click")           
  1. 仅触发一次事件
.one() //用法同.on           

10. 动画

  1. 显示/隐藏
.show() //可选参数持续时间,如3000表示3秒,或者“slow”
.hide() //添加第二参数闭包函数则动画完毕后执行           
  1. 自定义动画
.animate({'top': '+=88px', 'height': '200px'}, 'slow')           
  1. 队列动画
.queue([function([next]){ ......; [next()[]}])
.dequeue() //两个函数都是执行下一个函数           
  1. 上下卷动
.slideUp()
.slideDown()
.slidToggle()           
  1. 动画操作
.delay()
.stop()           
  1. 动画属性
.fx.interval //运行帧数
.fx.off = ture //关闭动画效果           

11. AJAX

.load()
  1. 第一个参数:目的 url 或者带选择器的 url (可带get的参数)
  2. 第二个参数:不为空则为post方式
  3. 第三个参数:闭包函数(返回数据,状态,XMLHttpRequest对象)
.get()
.post()
.AJAX() //底层函数

(以下为传入参数的属性)

  1. url
  2. type
  3. timeout
  4. data
  5. dataType
  6. beforeSend
  7. complete
  8. success
  9. error
  10. global
  11. cache
  12. content
  13. contentType
  14. async
  15. processData
  16. dataFilter
  17. ifModified
  18. jsonp
  19. username
  20. password
  21. scriptCharset
  22. xhr
  23. traditional
$.ajaxStart()
$.ajaxStop()
$.ajaxError()
$.ajaxSuccess()
$.ajaxComplete()
$.ajaxSend()
$.ajaxSetup() //请求默认值来初始化参数
$('form').serialize() //获取表单所有值
$('form').serializeArray() //返回键值对的Json对象

12. 工具函數

  1. 除去字符串两边空格
$.trim(str)           
  1. 遍历数组(对象)
$.each(arr, function(index, value){})           
  1. 数据筛选
$.grep(arr, function(element, index){})           
  1. 修改数据
$.map(arr, function(element, index){})           
  1. 合并数组
$.merge(arr1, arr2)           

6.测试类型函数

$.isArray(obj)
$.isFunction(obj)
$.isEmptyObject(obj)
$.isPlainObject(obj) //纯粹对象
$.isNumeric(data)
$.isWindow(data) //window对象
$.contains(obj) //包含其他节点           
  1. 判断类型函数
$.type(data)           
  1. 将对象键值对转换为URL字符串键值对
$.param(obj)           
  1. 调用内部函数
$.proxy(obj, 'objFunc') //返回obj对象里的objFunc函数           

13. 插件

1.Validate.js

(jquery.validata.js 、 jquery.validate.messages_zh.js)

  1. 相关代码
$('form').validate()           
  1. 必填项
class = “required”           
  1. 邮箱
class = "email"           
  1. 不得少于两位
minlength = "2"           
  1. 网址
class = "url"           

2. 自动完成插件 (jquery.autocomplete.js 、 jquery-migrate-1.2.1.js)

var name = ['John', 'Jack', 'Tom', 'Kitty'];
$('form input[name=name]').autocomplete(name, {minChars: 0}) //0表示不需要输入一个字符即可显示所有备选数据           

3. 自定义插件

分类
  1. 封装对象方法的插件
  2. 封装全局函数的插件
  3. 选择器插件
插件规范
  1. 名字: jquery.[name].js
  2. 局部对象附加 jquery.fn 对象上,全局函数附加在 jquery 上
  3. 插件内部,this 指向的是当前的局部对象
  4. 可以通过 this.each 来遍历所有元素
  5. 所有的方法或插件,必须用分号结尾,避免出现问题
  6. 插件应该返回的是 JQuery 对象,以保证可链式连缀
  7. 避免插件内部使用 $ ,如果要使用,请传递 JQuery 进去

继续阅读