1. 选择页面元素
jQuery的设计思想就是 [ 选择某个元素,然后对其进行操作 ],因此,通过jQuery直接选择到元素得到的返回值是一个包含各种操作方法的对象,具体想对选择到的元素进行何种操作,只需调用对应的函数(接口)即可。
jQuery即$,只接受一个参数,这个参数有两种类型。
1.1 CSS选择器
$(document) //选择整个文档对象
$('#myId') //选择ID为myId的元素
$('.myClass') // 选择class为myClass的元素
$('input[name=first]') // 选择name属性等于first的input元素
1.2 jQuery特有表达式
$('a:first') //选择网页中第一个a元素
$('tr:odd') //选择表格的奇数行
$('#myForm :input') // 选择表单中的input元素
$('div:visible') //选择可见的div元素
$('div:gt(2)') // 选择所有的div元素,除了前三个
$('div:animated') // 选择当前处于动画状态的div元素
2. 过滤性选择元素
$('div').has('p'); // 选择包含p元素的div元素
$('div').filter('.myClass'); //选择class等于myClass的div元素
$('div').not('.myClass'); //选择class不等于myClass的div元素
$('div').first(); //选择第1个div元素
$('div').eq(5); //选择下标为5即第6个div元素
3. 选择元素的亲戚们
$('div').parent(); //选择div元素的父元素
$('div').children(); //选择div的所有子元素
$('div').siblings(); //选择div的同级元素
$('div').next('p'); //选择div元素后面的第一个p元素
$('div').closest('form'); //选择离div最近的那个form父元素
4. 元素的基本操作
创建元素
//让一个DOM元素变成jQuery元素
let $element = $(domNode);
let newLi = $('<li class="new">new list item</li>'); //创建新元素
$('ul').append(newLI);//先创建再添加
$('ul').append('<li>list item</li>'); //直接添加
清空元素内容
$( ".hello" ).empty(); //清空class为hello的元素的所有子节点,但不删除元素
删除元素
$( ".hello" ).remove(); //删除class为hello的元素本身和其所有子节点。除了元素本身之外,还删除与元素关联的所有绑定事件和 jQuery 数据。
$(".hello").detach(); //与remove类似,不同之处是不删除与元素关联的所有绑定事件和 jQuery 数据。
复制元素
$( ".hello" ).clone();
5. 元素的位置移动
元素的位置移动有两种方法,一种方法是直接移动该元素,另一种方法是移动其他元素,使得目标元素达到我们想要的位置。
假定我们选中了一个div元素,需要把它移动到p元素后面。
第一种方法是使用.insertAfter()把div元素移动p元素后面:
$('div').insertAfter($('p'));
第二种方法是使用.after(),把p元素加到div元素前面:
$('p').after($('div'));
表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。
使用这种模式的操作方法,一共有四对:
.insertAfter()和.after():在现存元素的外部,从后面插入元素
.insertBefore()和.before():在现存元素的外部,从前面插入元素
子.appendTo()和父.append():在现存元素的内部,从后面插入元素
子.prependTo()和父.prepend():在现存元素的内部,从前面插入元素
6. 取值赋值合一API
$('h1').html(); //html()没有参数,表示取出h1的值
$('h1').html('Hello'); //html()有参数Hello,表示对h1进行赋值
常用的取值赋值函数如下:
.html() 取出或设置html内容
.val() 取出某个表单input元素的值
.text() 取出或设置text内容
.attr(attributeName) 取出或设置某个属性的值
.width() 取出或设置某个元素的宽度
.height() 取出或设置某个元素的高度
需要注意的是,如果结果集包含多个元素,那么赋值的时候,将对其中所有的元素赋值;取值的时候,则是只取出第一个元素的值 (.text()例外,它取出所有元素的text内容)。
.attr()
$('h1').attr('class'); //获取h1元素的class值
$('h1').attr('class','newClass'); //设置h1元素的class值为newClass
$('h1').attr({
'class': 'newClass',
id: 'newId'
}); //设置h1元素的class和id等多个属性,class属性名必须加引号,其他随便
$('h1').attr('class',function(index, oldval){
return 'new' + val + index;
}); //函数的index值是每个h1元素的下标,oldval是其旧的属性值,return返回新值,若不return或return undefined,则保持原有值不变
以上的取值赋值合一方法的赋值参数都可以是函数,函数中的参数值为index下标和oldval旧的值。
7. 链式操作
$('div').find('h3').eq(2).html('Hello');
上述的链式操作一步步解释为:
$('div') //找到div元素
.find('h3') //选择其中的h3元素
.eq(2) //选择第3个h3元素
.html('Hello'); //将它的内容改为Hello
后退一步到上个节点,用end()方法
$('div')
.find('h3')
.eq(2)
.html('Hello')
.end() //退回到选中所有的h3元素的那一步
.eq(0) //选中第一个h3元素
.html('World'); //将它的内容改为World
8. 参考
以上内容来源于其他博客和文档的整理和总结
阮一峰的《jQuery设计思想》
jQuery 中文文档