jQuery
jquery.min.js 表示压缩过的代码
jquery.js 表示正常的代码写法
入口函数
$(function () {})
类似 window.onload 也就是 onload = function () {} (默认挂载在 window 对象上)onload 只能执行一个,而 $ 可以执行多个
$(document).ready(function () {})
类似addEventListener(“DOMContentLoaded”, function () {})
JQ对象
$(“CSS选择器”) 返回一个 jq 对象,可以使用 jq 方法,不能使用 DOM 对象的原生方法
1 | var $box = $(".box") // jQ 对象变量名一般加上 $ 符号 |
JQ 对象转 dom 对象
$("CSS选择器")[index]
把选中的 jq 对象转为 dom 对象,如$(".box")[0]
获取第一个 .box 的 dom 对象$("CSS选择器").get(index)
把选中的 jq 对象转为 dom 对象
dom 对象转 jq 对象
$(dom)
可以直接传入 DOM 对象! 如 $(document,getElementsByClassName(“box”)[0]) 就得到 $(“.box”):eq(0)
选择器
基本选择器与 document.querySelectorAll() 写法一致,都写入 CSS 选择器
$("CSS选择器")
筛选器
与伪类选择类似,但它选择是所有 li 中的下标,而不是同一个父元素下的 li 的下标
$("li:first") = $("li:eq(1)")
下标等于1 、$("li:last")
最后一个 li、
$("li:gt(3)")
下标大于三
$("li:ls(3)")
下标小于三
$("li:odd")
偶数行、$("li:even")
奇数行
$("li:empty")
选中一个空的 li 元素
$("li:contains(text)")
匹配包含 text 文本的 li
$("*").eq(3)
eq() 也可以写在外面,但不是:
而是.
了,这样就能选择别的元素了,不一定都是 li (这里前面写了 *,为了说明这一点) 如果写 $(“li”):eq(3) 其实与写在里面效果一样。
这个属性是为了选择元素! 和 $(“*”)[3] 一样!只不过这个选择的元素能用 JQ方法,原生的不行!
$("li").eq(3).prevAll()
选择在li:eq(3) 之前的所有元素,元素倒序排列,也就是会写成 li2、li1、li0,而不是li0、li1、li2
$("li").eq(3).siblings()
选择除自己之外的所有兄弟节点
$(".box").find(ul)
找到符合条件的子元素 (不知道和$(“.box ul”) 有什么区别)
$(".box").children("p")
选择特定的关系节点 (不知道和$(“.box p”) 有什么区别)
css 样式
$(".box").css("width")
jQEle.css(“样式名”) ,类似 getComputedStyle(ele, null)[“样式名”]
$(".box").css("height", "100px")
设置单个样式,名与值都加引号,之间用 , 隔开
1 | // 设置多个样式时,传入一个对象 |
属性
$(".box").attr("title","这是鼠标放上去显示的提示内容")
$(".box").removeAttr("title")
删除
jQ用 .attr() 与 get、set、removeAttribute() 类似
如果要设置多个,同样是传入一个对象,与设置 css 类似,键名是属性名,键值是需要设置的值
获取与设置内容
$(".box").html()
获取与设置 html 内容 ,与 innerHTML 类似
$(".box").text()
获取与设置 text 内容, 与innerText 类似
$(".box").val()
获取与设置 input 的 value 值
在括号中写入要设置的值,如 $(".box").text("123")
类名
与 dom.classList.add()/remove()/toggle()/contains()
类似,不过 jQ 能操作多个类名
$(".box").addClass("b1 b2 b3")
可以添加一个或多个类,类名之间用空格隔开
$(".box").removeClass("b1 b2")
可以删除一个或多个类,类名之间用空格隔开
$(".box").toggleClass("b3")
添加或删除 b3 类名,如果存在就删除,如果不存在就添加
$.(".box").hasClass("b3")
判断是否有 b3 类名,返回 true 或 false
事件
1 | // jQuery 事件不带 on |
动画
1 | $(selector).show(2000) // 动画时间 毫秒 |
操作节点
1 | var pEle = document.createElement("p") |
坐标值
$(selector).offset()
在 jq 中,这个是获取元素相对于文档的位置,同时可以设值$(selector).offset({left:100,top:50})
$(selector).position()
获取元素外边距外侧开始到最近的有相对定位的父元素的距离,,不能设置$(selector).scrollTop()
获取或设置元素垂直方向滚动的位置设值:
$(selector).scrollTop(100)
, JQ通过修改 top、left 值来改变元素的上左边距,如果元素没有定位,会自动添加position: relative
,相对定位在 JQ 中,获取页面高度
$(document).scrollTop()
即可,也可以在 括号中 加入设置值 ,设置值实际使用了 原生的window.scrollTo()
方法
宽高
$(".box").width()
获取宽度
$(".box").width(100px)
设置宽度
$(".box").height()
获取高度,设置高度同理
绑定事件
JQ 最开始 是用 bind、triggle 绑定事件,在 jQ 1.7 之后多了 on 方式,大家都用它了。
1 | $(".box").click(function (){ |
解绑
1 | $(".box").dbclick(function () { |
注
隐式迭代与链式编程
JQ 的方法默认对指定的 JQ 对象中的所有元素都操作一遍(隐式迭代),同时每个方法都会返回被操作的元素本身,所以可以链式编程,如
1 | $(".box").css("width", "100px") |
大部分情况下 jQ 是不需要 each 方法的,因为 jQuery 隐式迭代的特性,但如果需要对每个元素做不同的处理,就需要 each
1 | $(this).index() // 获取当前元素在父元素所有节点中的 |
多库共存
$.noConflict()
让 jQuery 释放对 $ 的控制权,之后只能通过 jquery 对象使用 jQuery 的方法