JS-14: jQuery

97 阅读2分钟

1 基本思想

  • jQuery返回的是一个可以操作elements的对象;

  • jQuery的核心思想:它提供一个函数,这个函数接受一个CSS选择器,然后获取到这些元素,但是不会返回这些元素,会返回一个对象,这个对象中的方法(函数)会去操作这些元素,用闭包去维持elements(获取到的元素),只要函数不死,elements就不死,因为函数在访问elements,被访问的东西是不能随便删掉的;

  • 给jQuery对象传什么,jQuery就操作什么;

2 获取元素

2.1 CSS选择器

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

2.2 jQuery表达式

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

3 复制、删除、创建元素

  • 复制:.clone

  • 删除;

.remove()  //不保留被删除元素的事件
.detach()  //保留,有利于重新插入文档时使用
  • 创建:直接将新元素传入 jQuery 的构造函数就行:
$('<p>Hello</p>');
$('ul').append('<li> list item </li>');

4 链式操作

  • 原理: 每一步的 jQuery 操作,返回的都是一个 jQuery 对象,所以不同操作可以连在一起。
$('div').find('h3').eq(2).html('Hello');

分解后:

$('div')  //找到div元素
    .find('h3')  //选择其中的h3元素

    .eq(2)  //选择第3个h3元素

    .html('Hello');  //将它的内容改为Hello
  • jQuery 还提供了 .end() 方法,使得结果集可以后退一步。
$('div')

   .find('h3')

   .eq(2)

   .html('Hello')

   **.end() //退回到选中所有的h3元素的那一步**

   .eq(0) //选中第一个h3元素

   .html('World'); //将它的内容改为World

5 移动元素

5.1 直接移动元素

$('div').insertAfter($('p'))  //将 div 元素插入到 p 元素后面,返回 div 元素;

5.2 移动其它元素,使得目标元素到达想要的位置

$('p').after($('div'))  //将 p 元素移动到 div 前面,返回 p 元素;

5.3 类似操作方法

.insertAfter()和.after()  //在现存元素的外部,从后面插入元素

.insertBefore()和.before()  //在现存元素的外部,从前面插入元素

.appendTo()和.append()  //在现存元素的内部,从后面插入元素

.prependTo()]和.prepend()  //在现存元素的内部,从前面插入元素

6 修改元素的属性

取值(getter)和赋值(setter)合一,根据参数的个数决定:

$('h1').html()  //html()没有参数,表示取出h1的值

$('h1').html('Hello')  //html()有参数Hello,表示对h1进行赋值

常见的取值和赋值函数:

.html()  //取出或设置html内容

.text()  //取出或设置text内容

.attr()  //取出或设置某个属性的值

.width()  //取出或设置某个元素的宽度

.height()  //取出或设置某个元素的高度

.val()  //取出某个表单元素的值
  • 注意:如果结果包含多个元素,那么赋值的时候,将对其中所有的元素赋值;取值的时候,则是只取出第一个元素的值(.text()例外,它取出所有元素的 text 内容)

7 文档

jQuery() | jQuery API Documentation

jQuery API 中文文档 | jQuery 中文网 (jquery123.com)

jQuery设计思想 - 阮一峰的网络日志 (ruanyifeng.com)