jQuery基本使用
jQuery入口函数
jQuery相当于原生js中的DOMContentLoaded
//方法一
$(function(){
...
});
//方法二
$(document).ready(function()){
...
});
jQuery选择器
jQuery基础选择器
$("选择器"),选择器直接写css选择器。
层级选择器
- 子代选择器:
$("ul>li"),使用>号,获取直接子代。 - 后代选择器:
$("ul li"),使用空格,获取ul下的所有li。
筛选选择器
隐式迭代
jQuery设置样式时会进行隐式迭代,不需要用循环,自动给匹配到的所有元素进行遍历循环,执行相应的方法。
<body>
<div></div>
<div></div>
<div></div>
<script>
$(function(){
$('div').css('backgroundColor','blue');
})
</script>
</body>
排他思想
为当前元素设置样式后,再清除兄弟元素的样式。
$(this).css('color','red');
$(this).siblings.css('color','');
链式编程
链式编程是为了减少代码量。
$(this).css('color','red').siblings().css('color','');
DOM对象和jQuery对象的区别
- DOM对象:用原生js获取过来的对象
- jQuery对象:用jQuery方式获取过来的对象,本质是通过$对DOM元素进行了包装
- DOM对象使用原生js的属性和方法,jQuery对象只能使用jQuery方法。
//DOM对象
var div = document.querySelector('div');
//jQuery对象
$('div')
jQuery样式操作
- 通过操作css方法设置样式
- 参数只写属性名,返回属性值。
- 参数为属性名和属性值,属性需要加引号,值如果为数字可以不跟单位,不加引号。
- 参数可以以对象的形式传入,设置多组样式,以对象形式传入时属性名可以不加引号,属性值若为数值可以不加单位和引号。
$(this).css("color");
$(this).css("color","red");
$(this).css({"color":"red","font-size":"10px"});
- 通过设置类样式方法 添加、移除、切换类。
$('div').addClass('current');
$('div').removeClass('current');
$('div').toggleClass('current');
jQuery效果
jQuery封装了很多动画效果,可以通过查阅文档使用。也可以通过animate自定义动画。
jQuery属性操作
设置或获取元素固有属性值prop()
元素固有属性:元素本身自带的属性
- 获取属性值:prop('属性')
- 设置属性值:prop(‘属性’,‘属性值’)
设置或获取元素自定义属性值prop()
- 获取属性值:attr('属性')
- 设置属性值:attr(‘属性’,‘属性值’)
数据缓存data()
利用data()在元素上存放或读取数据,返回jQuery对象,当页面被刷新后数据丢失。
- 存放数据:data('name','value')
- 读取数据:data('name')
jQuery获取内容文本值
- 获取或设置普通元素的所有内容html()(相当于原生innerHTML)
- 获取或设置元素的文本内容不包括标签text()(相当于原生innerText)
- 获取或设置表单的值val()
jQuery元素操作
jQuery元素遍历
$('div').each(function(index,domEle){...})
each()会遍历匹配的每个元素,index为每个元素的索引号,domEle相当于this(domEle为DOM元素对象,使用jQuery方法前需要用$(domEle)将其转化为jQuery对象)
$.each(object,function(key,value){})
用于数组,对象的遍历很方便。key,value分别对应object的键和值。
var a = [1,2,3];
$.each(a,function(key,value){
console.log(key+':'+value);
})
jQuery元素的创建、添加、删除
- 创建元素
$("<li></li>"); - 添加元素
内部添加:
- 将添加元素放到元素内部最后,element.append("内容");
- 将添加元素放到元素内部最前面,element.prepend("内容");
外部添加:
- 将添加元素放到目标元素之后,element.after("内容");
- 将添加元素放到目标元素前面,element.before("内容");
- 删除元素
- 删除元素本身:element.remove()
- 删除元素的所有子节点:element.empty()
- 清空元素内容(和empty()等价):element.html("")
jQuery元素尺寸、位置操作
尺寸操作
如果参数为空则返回相应值,返回的是数字型。如果为数字则修改相应值。
位置操作
- offset()设置或获取元素相对于文档的偏移,返回一个包含left、top属性的对象。并可以通过offset()设置元素的偏移。
- position()获取元素相对于带有定位的父级元素的偏移。该方法只能获取相应值不能改变。
- scrollTop()、scrollLeft()设置或获取元素被卷去的头部或左侧。
jQuery事件
jQuery事件注册
单个事件注册
element.事件(function(){})
事件处理on()绑定事件
on()可以在元素上绑定多个事件的事件处理函数
element.on(events,[selector],fn)
- events,一个或多个用空格分割的事件类型
- selector,元素的子元素选择器
- fn,回调函数
on()可以绑定多个事件,多个事件处理程序
$('div').on({
click:function(){},
mouseover:function(){}
})
//如果是相同的事件处理程序
$('div').on('mouseover mouseout',function(){})
on()可以进行事件委派,事件委派:把原来应该绑定在子元素身上的事件绑定在父元素身上,即把事件委派给父元素。
$('ul').on('click','li',function(){
alert('hello world');
});
on()可以给动态生成的元素绑定事件,click不能。
$('ul').on('click','li',function(){
alert(11);
});
var li = $('<li>111</li>');
$('ul').append(li);