JQuery常用命令

2020-11-26 16:19:39 浏览数 (1)

1. DOM 分为三部分

(1). 核心 DOM:操作任意标签树

(2). HTML DOM:操作 HTML 标签树

(3). XML DOM:操作 XML 标签树

2. 常用的核心 DOM 操作

(1). 查找元素的方法

①. document.getElementById('p1')

②. document.getElementsByName('uname')(表单元素)

③. document.getElementsByTagName('div')

④. document.getElementsByClassName('btn')

⑤. document.querySelector('选择器')

⑥. document.querySelectorAll('选择器')

遍历 DOM 节点:

①. node.parentNode

②. parent.childNodes、parent.children

③. node.nextSibling、node.previousSibling

(2). 修改元素的属性

①. node.setAttribute('title','值')

②. node.getAttribute('title')

(3). 修改元素的内容

①. element.innerHTML

②. element.textContent/innerText

(4). 修改元素的样式

①. element.style.color = 'red';

②. element.className = 'btn btn-danger'

(5). 修改元素的值

①. inputElement.value

(6). 添加新元素

①. var obj = document.createElement('div');

parent.appendChild(obj)

(7). 删除已有元素

①. parent.removeChild(node)

(8). 替换旧元素

①. parent.replaceChild(oldChild, newChild)

(9). 元素克隆

①. element.cloneNode()

(10). 总结:核心 DOM 操作的问题

①. 方法名普遍比较长

②. 操作比较僵硬

③. 方法存在浏览器兼容性

3. JQuery 概述

JQuery 是一个 DOM 操作的函数库,简化了常用的 DOM 操作,理念:Write Less, Do More.JQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.

4. JQuery 提供了四类函数

(1). DOM 操作 — 重点

(2). 事件处理

(3). 动画函数

(4). AJAX

5. JQuery 的版本问题

(1). JQuery 1.x:比较大、功能偏弱、兼容老 IE

(2). JQuery 2.x:比较小、功能强大、不兼容老 IE

(3). JQuery 3.x:比较小、功能更强大、不兼容老 IE

HTML 中使用 JQuery,只需要使用 Script 标签引入 JQuery-*.js 即可,会为全局window添加两个新的成员:

(1). window.$

(2). window.Jquery

6.JQuery 函数的特点

(1). $或者 JQuery 是一个函数,返回值是一个 JQuery 类数组对象

(2). 即使没有查找到需要的元素,JQuery 类数组对象也不会是 null/undefined,调用 JQuery 函数不会报错

(3). JQuery 类数组对象提供的函数都自带 for 循环遍历每个查找到的元素

(4). JQuery 函数底层都是 DOM 操作,所以可和原生的 DOM 操作组合使用

(5). 原生 DOM 对象不能调用 JQuery 提供的函数

JQuery 函数返回的类数组对象也不能调用核心 DOM 成员

(6). 原生 DOM 对象和 JQuery 对象间如何转换

①. 原生 DOM 对象封装到JQuery 类数组对象

$(domObject)

②. JQuery 类数组对象中取出封装的 DOM 对象

$('button')[index]

(7). JQuery 对象方法的返回值一般还是当前选定的类数组对象,可以实现“链式调用”

7. JQuery 的选择器语法支持所有的 CSS 选择器语法,并屏蔽了浏览器兼容性,同时还扩展了一些新的选择器语法

8. 基本选择器 — 重点

(1). #id

(2). className

(3). 标签名

(4). *通用选择器

9. 层级选择器 — 重点

(1). ancestor descendant 后代选择器

(2). parent > child 直接子代选择器

(3). prev next 下一个相邻兄弟选择器

(4). prev ~ siblings 后续的所有兄弟选择器

10. 基本过滤选择器 — 重点

基本过滤选择器把所有满足选中的元素放在一个大集合中进行排序,不论是否在同一个父元素中与否,下标从 0 开始

(1). :first 第一个

(2). :last 最后一个

(3). :eq(index) 第 index 个

(4). :gt(index) 下标大于 index

(5). :lt(index) 下标小于 index

(6). :odd 下标为奇数的

(7). :even 下标为偶数的

(8). :not(selector)

11. 子元素过滤选择器 — 重点 

在每个父元素中进行分组,查找指定的子元素,下标从 1 开始

(1). :first-child 第一个子元素

语法: $('li:first-child');

(2). :last-child 最后一个子元素

语法: $('li: last -child');

(3). :nth-child(index) 第 index 个子元素

语法: $('li:nth-child(2)');

奇数个: $('li:nth-child(odd)');

偶数个: $('li:nth-child(even)');

(4). :only-child 只有一个子元素的元素

语法:$('li:only-child');

12. 属性选择器

(1). [attribute]

语法:$('a[title]') 选中所有具备 title 属性的 a 元素

(2). [attribute=value]

语法: $('[data-toggle="dropdown"]'),选中所有具备 data-toggle 属性且值为 dropddown 的元素

(3). [attribute!=value] 属性值不等于value的属性

(4). [attribute^=value] 属性以value开头的属性

(5). [attribute$=value] 属性以value结尾的属性

(6). [attribute*=value] 具备指定的属性,且值中包含指定字符

13. 可见性选择器

(1). :visible

语法:$(':visible')选中所有可见元素

(2). :hidden

语法:$(':hidden')选中所有隐藏元素

(3). 测试:哪些是:hidden 可以选中的?

①. display:none 可以

②. visibility: hidden 不可以

③. opacity: 0 不可以

④. input[type="hidden"] 可以

14. 内容过滤选择器

(1). :contains(txt) 文本中包含“txt”字的元素

(2). :has(selector) 包含选择器所匹配的元素的元素

(3). :empty 选中内容为空元素

(4). :parent 匹配含有子元素或者文本的元素

15. 表单元素选择器

(1). :input

(2). :text

(3). :password

(4). :radio

(5). :checkbox

(6). :submit

(7). :image

(8). :reset

(9). :button

(10). :file

(11). :hidden

(12). :enabled

(13). :disabled

(14). :checked

(15). :selected

16. 操作元素的属性

(1). 核心 DOM

①. element.getAttribute('title')

读取属性的值

②. element.setAttribute('title', 'abc')

设置属性的值

(2). JQuery

①. var value = $(..).attr('title')

读取属性的值

②. $(..).attr('title', 'abc')

设置属性的值

提示:读取和设置元素的 data-*扩展属性,可以使用 attr()方法,也可以使用 data()

方法,如:<a data-my-target="1.jpg">

①. var v = $(...).data('my-target') 读取

②. $(...).data('my-target', '2.jpg') 设置

17. 操作元素的内容

(1). 核心 DOM

①. var h = element.innerHTML;

②. element.innerHTML = h;

③. var t = element.innerText/textContent;

④. element.innerText/textContext = t;

(2). JQuery

①. $(..).html( )

读取 innerHTML

②. $(..).html( 'html' )

设置 innerHTML

③. $(..).text()

读取 innerText

④. $(..).text( 'txt' )

设置 innerText

18. 操作元素的样式

(1). 核心 DOM

①. var c = element.style.color

读取行内样式

②. element.style.color = 'red'

设置行内样式

③. var n = element.className

读取 ClassName

④. element.className = n

设置 ClassName

(2). JQuery

①. $(..).css('color')

读取指定样式的值

②. $(..).css('color', 'red')

设置行内样式

③. $(..).addClass('alert')

添加一个 class

④. $(..).removeClass('alert')

删除一个 class

⑤. $(..).hasClass('alert')

判断选定元素是否具有指定 class

19. 操作表单元素的值

(1). 核心 DOM

①. var v = input.value

②. input.value = 'v'

(2). Jquery

①. $(...).val( )

②. $(...).val('value')

(3). 面试题:在操作元素的相关属性时,使用 attr()、val()、prop()、data()有何区别?

attr() 一般只用于操作元素的 HTML 字面属性,如 src、href、name..

val() 操作的是HTML 元素对应的 JS 对象的 value 属性

prop() 操作的是 HTML 元素对应的 JS 对象的 disabled、readyonly、selected、checked 等 Boolean 类型属性

data() 操作的是 HTML 元素对应的 JS 对象的扩展数据属性(对象缓存数据),而attr('data-xx')读取/修改的 HTML 元素字面

20. 获取元素

(1). 核心 DOM, 遍历 DOM 树上的节点

①. element.parentNode

寻找父节点

②. element.childNodes/children

获取子节点

③. elemnet.nextSibling

获取下一个兄弟

④. element.previousSibling

获取上一个兄弟

(2). JQuery

①. $(..).parent();

返回选定元素的父节点

②. $(..).children();

返回所有子节点

③. $(..).next();

返回下一个兄弟

④. $(..).prev();

返回上一个兄弟

⑤. $(..).siblings();

返回所有的同辈兄弟

21. 添加新的元素

(1). 核心 DOM

var li = document.createElement('li')

// 创建子节点

ul.appendChild( li );

// 添加到父节点

(2). JQuery

var li = $('<li class="item">内容</li>')

// 创建子节点

$('ul').append( li );

// 在父节点最后追加子节点

$(li).appendTo( 'ul' )

// 子节点追加到父节点最后

以上代码可以简写为

$('ul').append( '<li class="item">内容</li>' )

22. 删除已有的元素

(1). 核心 DOM

①. ul.removeChild( li )

由父元素删除孩子

(2). JQuery

①. $('li').remove()

删除当前选定元素

23. 替换已有元素

(1). 核心 DOM

①. parent.replaceChild(oldChild, newChild);

(2). JQuery

①. $('oldChild').replaceWith( newChild )

已有节点用新节点替换,返回被删除的旧节点

②. $('newChild').replaceAll( oldChild )

新节点替换所有的旧节点,返回新节点

24. 克隆节点

(1). 核心 DOM

①. var copy = element.cloneNode( )

(2). JQuery

①. var copy = $(..).clone()

返回选定元素的副本

②. var copy = $(..).clone(copyListener)

参数指示是否复制选定元素绑定的监听函数,默认为 false,不复制监听函数

25. JQuery 函数第二部分:事件处理函数

JQuery 的历史上先后出现了若干事件处理函数

(1). one(事件名称, fn) 仅对指定事件监听一次

(2). on() / off()

(3). click() / mouseover() / mouseout() / keyup()

26. on()函数

(1). 第一种使用方法——直接绑定在事件源上

①. $('事件源').on('事件名称', fn)

绑定监听函数

②. $('事件源').off('事件名称')

取消所有监听函数

on() 的第一种用法有两个限制:

①. 若选中元素很多,每个都会有一个监听函数

②. 无法为后添加的元素执行绑定

(2). on()函数的第二种使用方法——委托给父元素进行事件代理

①. $('parent').on('事件名称', '子元素选择器', fn)

A. DOM 中为元素绑定监听函数:

btn.onclick = function(){ };

btn.addEventListener('click', function(){ });

B. JQuery 中的 on()函数底层是 addEventListener

27. 面试题:window.onload 和$(document).ready()的异同?

(1). window.onload 是核心 DOM 的写法

window.onload = function(){ ... }

只能为绑定一次,只有全部的网页内容(html/css/js/图片....)加载完成才能触发

(2). $(document).ready()是 JQuery 的写法

$(document).ready(function(){ ... })

底层是 addEventListener('DOMContentLoaded', fn),可以先后绑定多次,只要“DOM 内容(只包括 html/js)加载完成”即可触发

28. JQuery 中的 hover()函数

JQuery 监听“鼠标进入 鼠标离开”有如下三种方法:

(1). (..).mouseover(fn) (..).mouseout(fn)

(2) . (..).mouseenter(fn) (..).mouseleave(fn)

(3) . $(..).hover( fn, fn )

注意: 方法 3 等同于方法 2

29. JQuery 中的 trigger()函数

使用 JS 代码代替用户触发指定的事件,调用之前绑定的监听函数

('.btn').trigger( 'click' ) 可简写:('.btn').click()

30. JQuery 中的函数第三部分:动画函数 — 隐藏和显示动画

隐藏和显示函数通过使用定时器修改目标元素的 width / height / opcaity 三个样式的值来实现动画

(1). $(..).show()

(2). $(..).hide()

(3). $(..).toggle()

31. JQuery 中的函数第三部分:动画函数 — 折叠展开/收起动画

折叠展开/收起动画函数通过使用定时器修改目标元素的height 一个样式的值来实现动画:

(1). $(..).slideUp( )

(2). $(..).slideDown( )

(3). $(..).slideToggle()

32. JQuery 中的函数第三部分:动画函数 — 淡入/淡出动画

淡入/淡出动画函数通过使用定时器修改目标元素的 opacity 一个样式的值来实现动画:

(1). $(..).fadeIn( )

(2). $(..).fadeOut( )

(3). $(..).fadeToggle( )

提示: 上述六个动画函数都可以在最后接收一个参数为函数

$(..).fadeOut( 300, function(){ //在动画结束时的回调函数 })

33. JQuery 中的函数第三部分:动画函数 — animate()

语法 : $(..).animate({

属性 1: 值 1

}, 300, fn);

动画排队:执行完一个动画后,再执行另一个

动画并发:同时执行多个属性的动画效果

34. animate({ })可以对哪些 CSS 属性执行动画?

(1). width、height、opacity、fontSize....等等有可渐变属性值(数值型)的样式可以执行动画

(2). display、fontFamily、transform、颜色类属性等没有渐变属性值的样式不能执行动画

35. Web 应用中可用的动画技术:

(1). CSS3 Transition

(2). CSS3 Keyframes

(3). 定时器 属性修改 JQuery1/2 动画函数

(4). requestAnimationFrame JQuery3

36. JQuery 类数组对象的操作:

window.$ <=> window.Jquery

$()函数或 JQuery()返回值是一个“类数组象”— 有点像数组,但不是 Array 类型的实例,其中封装着查找到的所有 DOM 元素。该对象称为“JQuery 对象”,其类数组相关操作:

(1). $(..).length

获取类数组中封装的 DOM 对象的数量

(2). $(..)[index]

获取类数组中封装的第 index 个 DOM 对象

(3). $(..).get(index)

获取类数组中封装的第 index 个 DOM 对象

(4). $(..).each(fn)

遍历类数组中封装的每一个 DOM 对象,针对每个 DOM 元素执行一次指定的回调函数

(5). $(..).index(domObj)

返回指定的 DOM 元素在当前类数组中的下标

37. 补充:页面 DOM 内容加载完成后执行指定的函数,以下三种写法一样

(1). $(document).ready(fn)

(2). $().ready(fn)

(3). $(fn)

38. JQuery 中的插件函数

Plugin:插件,在现有的功能基础上添加更多的功能,扩展整体的应用。

JQuery 中的插件(即函数)分为两类:

(1). JQuery 全局插件函数

原本要声明的工具函数(如 max()/min())如果声明为全局函数,会造成“全局对象(window)的污染;为了避免污染全局对象,可以把这些函数纳入到 JQuery 对象的名下

声明方式:JQuery.max = function(arr){ }

调用方式:JQuery.max([10,38,50])

(2). JQuery 对象插件函数

JQuery 对象插件函数就是为所有的 jQuery 对象添加的公共函数,用于操作当前选定的 DOM 元素

声明方式:JQuery.fn.max = function( ){ }

调用方式:$('li').max()

JQuery(..)或 $(..)的返回值是一个类数组对象—“JQuery 对象”,所有的 JQuery 对象的原型:JQuery.fn;

若想给所有的 JQuery 对象都添加一个扩展函数,只需要加给 JQuery.fn 即可

39. JQuery 常用AJAX函数

(1). $.get(url, data ,callback);

发起一个ajax的GET请求, 在请求主体中提交请求数据,如果服务器返回成功,响应消息,调用callback函数,在方法中处理响应的数据 callback => function(data){}

$.get会根据服务器端返回的响应消息内容类型自动决定如何处理,如果是application/json,会自动调JSON.parse(xhr.responseText)进行解析

$.get("cake_type.php", {cid:id },function(data){

// data json=>JSON.parse(data);

});

(2). $.post(url,data,callback);

发起一个ajax POST请求,并在请求主体中提交请求数据,如果服务器返回成功响应消息,调用callback,在callback方法中处理响应数据,使用方法三种:

①. $.post(url,data,callback);

②. $.post(url,'id=1&name=tom',callback);

③. $.post(url,{id:1,name:tom},callback);

(3). $.getJSON(url,data,callback); (了解)

发起异步请求GET,要求服务器返回JSON数据格式,会自动JSON.parse(data);

(4). $(“选择器”).load(url);获取服务器返回的HTML响应片段,设置为当前元素的innerHTML

①. 服务器返回的必须是HTML片段

②. 服务器返回的数据会替换已有数据

(5). $.getScript(url,data,callback); (了解)

发起异步请求GET, 要求服务器返回Javascript数据格式,即使不是,也会自动eval(xhr.responseText)进行执行,而$.get()可以实现同样的功能,却可以根据服务器端的响应头来决定是否调用eval()

(6). $.ajax({}); 功能最全最强,万能AJAX封装函数,提供非常多的可选项,可以处理各种情形,前面函数都是它的简化版,无法处理失败的情况

$.ajax({

// 请求方式post/pub/delete/head

type:'GET'

//请求地址

url:"x.php"

//请求服务器数据

data:'k=v&k1=v1'

//请求消息发送之前调用fn

beforeSend:fn

//响应完成并且成功调用fn

success:fn

//响应完成但有问题调用fn

error:fn

//响应完成回调(无论成败)fn

complete:fn

});

40. AJAX注意事项

对于异步请求成功后创建DOM元素,不能进行直接事件绑定! click()/bind(),因为在执行此事件绑定时,这些元素在DOM还不存在,必须将相关事件委托给DOM树上己经存在父元素

41. 面试题:JQuery中如何使用JSONP发起异步请求:

(1). $.getJSON()

①. 使用XHR发起异步请求(不能跨域)

$.getJSON('x.php', doResponse)

②. 使用JSONP发起跨域异步请求

$.getJSON('http://跨域地址/x.php?callback=?', doResponse)

(2). $.ajax()

①. 使用XHR发起异步请求(不能跨域)

$.ajax({ })

②. 使用JSONP发起跨域异步请求

$.ajax({ dataType: 'jsonp' })

0 人点赞