1. 选择页面元素

jQuery的设计思想就是 [ 选择某个元素,然后对其进行操作 ],因此,通过jQuery直接选择到元素得到的返回值是一个包含各种操作方法的对象,具体想对选择到的元素进行何种操作,只需调用对应的函数(接口)即可。

jQuery即$,只接受一个参数,这个参数有两种类型。

1.1 CSS选择器

  1. $(document) //选择整个文档对象
  2. $('#myId') //选择ID为myId的元素
  3. $('.myClass') // 选择class为myClass的元素
  4. $('input[name=first]') // 选择name属性等于first的input元素

1.2 jQuery特有表达式

  1. $('a:first') //选择网页中第一个a元素
  2. $('tr:odd') //选择表格的奇数行
  3. $('#myForm :input') // 选择表单中的input元素
  4. $('div:visible') //选择可见的div元素
  5. $('div:gt(2)') // 选择所有的div元素,除了前三个
  6. $('div:animated') // 选择当前处于动画状态的div元素

2. 过滤性选择元素

  1. $('div').has('p'); // 选择包含p元素的div元素
  2. $('div').filter('.myClass'); //选择class等于myClass的div元素
  3. $('div').not('.myClass'); //选择class不等于myClass的div元素
  4. $('div').first(); //选择第1个div元素
  5. $('div').eq(5); //选择下标为5即第6个div元素

3. 选择元素的亲戚们

  1. $('div').parent(); //选择div元素的父元素
  2. $('div').children(); //选择div的所有子元素
  3. $('div').siblings(); //选择div的同级元素
  4. $('div').next('p'); //选择div元素后面的第一个p元素
  5. $('div').closest('form'); //选择离div最近的那个form父元素

4. 元素的基本操作

创建元素

  1. //让一个DOM元素变成jQuery元素
  2. let $element = $(domNode);
  3. let newLi = $('<li class="new">new list item</li>'); //创建新元素
  4. $('ul').append(newLI);//先创建再添加
  5. $('ul').append('<li>list item</li>'); //直接添加

清空元素内容

  1. $( ".hello" ).empty(); //清空class为hello的元素的所有子节点,但不删除元素

删除元素

  1. $( ".hello" ).remove(); //删除class为hello的元素本身和其所有子节点。除了元素本身之外,还删除与元素关联的所有绑定事件和 jQuery 数据。
  2. $(".hello").detach(); //与remove类似,不同之处是不删除与元素关联的所有绑定事件和 jQuery 数据。

复制元素

  1. $( ".hello" ).clone();

5. 元素的位置移动

元素的位置移动有两种方法,一种方法是直接移动该元素,另一种方法是移动其他元素,使得目标元素达到我们想要的位置。

假定我们选中了一个div元素,需要把它移动到p元素后面。

第一种方法是使用.insertAfter()把div元素移动p元素后面:

  1. $('div').insertAfter($('p'));

第二种方法是使用.after(),把p元素加到div元素前面:

  1. $('p').after($('div'));

表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。

使用这种模式的操作方法,一共有四对:

  1. .insertAfter()和.after():在现存元素的外部,从后面插入元素
  2. .insertBefore()和.before():在现存元素的外部,从前面插入元素
  3. 子.appendTo()和父.append():在现存元素的内部,从后面插入元素
  4. 子.prependTo()和父.prepend():在现存元素的内部,从前面插入元素

6. 取值赋值合一API

  1. $('h1').html(); //html()没有参数,表示取出h1的值
  2. $('h1').html('Hello'); //html()有参数Hello,表示对h1进行赋值

常用的取值赋值函数如下:

  1. .html() 取出或设置html内容
  2. .val() 取出某个表单input元素的值
  3. .text() 取出或设置text内容
  4. .attr(attributeName) 取出或设置某个属性的值
  5. .width() 取出或设置某个元素的宽度
  6. .height() 取出或设置某个元素的高度

需要注意的是,如果结果集包含多个元素,那么赋值的时候,将对其中所有的元素赋值;取值的时候,则是只取出第一个元素的值 (.text()例外,它取出所有元素的text内容)。

.attr()

  1. $('h1').attr('class'); //获取h1元素的class值
  2. $('h1').attr('class','newClass'); //设置h1元素的class值为newClass
  3. $('h1').attr({
  4. 'class': 'newClass',
  5. id: 'newId'
  6. }); //设置h1元素的class和id等多个属性,class属性名必须加引号,其他随便
  7. $('h1').attr('class',function(index, oldval){
  8. return 'new' + val + index;
  9. }); //函数的index值是每个h1元素的下标,oldval是其旧的属性值,return返回新值,若不return或return undefined,则保持原有值不变

以上的取值赋值合一方法的赋值参数都可以是函数,函数中的参数值为index下标和oldval旧的值。

7. 链式操作

  1. $('div').find('h3').eq(2).html('Hello');

上述的链式操作一步步解释为:

  1. $('div') //找到div元素
  2.    .find('h3') //选择其中的h3元素
  3.    .eq(2) //选择第3个h3元素
  4.    .html('Hello'); //将它的内容改为Hello

后退一步到上个节点,用end()方法

  1. $('div')
  2.    .find('h3')
  3.    .eq(2)
  4.    .html('Hello')
  5.    .end() //退回到选中所有的h3元素的那一步
  6.    .eq(0) //选中第一个h3元素
  7.    .html('World'); //将它的内容改为World

8. 参考

以上内容来源于其他博客和文档的整理和总结

阮一峰的《jQuery设计思想

jQuery 中文文档