jQuery设计思想


Posted in Javascript onMarch 07, 2017

前面的话

在深入了解jQuery的各个细节之前,需要对jQuery的设计思想有一个大致的了解。在遇到问题时, 知道应该使用jQuery的哪一个功能,然后迅速从手册中找到具体的用法。本文将详细介绍jQuery的设计思想

选择元素

jQuery的基本设计思想和主要用法,就是"选择某个网页元素,然后对其进行某种操作"。这是它区别于其他javascript库的根本特点

使用jQuery的第一步,往往就是将一个选择表达式,放进构造函数jQuery()(简写为$),然后得到被选中的元素

【模拟CSS选择元素】

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

【特有表达式选择】

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

【多种筛选方法】

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

写法

【方法函数化】

在原生javascript中,赋值操作符用的比较多。而在jQuery中,多使用函数传参的方式,也就是方法函数化

//原生
window.onload = function(){};
//jQuery
$(function(){});
//原生
div.onclick = function(){};
//jQuery
div.click(function(){});
//原生
div.innerHTML = '123';
//jQuery
div.html('123');

【链式操作】

选中网页元素以后,可以对它进行一系列操作,并且所有操作可以连接在一起,以链条的形式写出来

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

分解开来,就是下面这样:

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

这是jQuery最令人称道、最方便的特点。它的原理在于每一步的jQuery操作,返回的都是一个jQuery对象,所以不同操作可以连在一起

jQuery还提供了.end()方法,使得结果集可以后退一步

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

【取赋值合体】

操作网页元素,最常见的需求是取得它们的值,或者对它们进行赋值。jQuery使用同一个函数来完成取值(getter)和赋值(setter),即"取值器"与"赋值器"合一。到底是取值还是赋值,由函数的参数决定

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

常见的取值和赋值函数如下

.html() 取出或设置html内容
.text() 取出或设置text内容
.attr() 取出或设置某个属性的值
.width() 取出或设置某个元素的宽度
.height() 取出或设置某个元素的高度
.val() 取出某个表单元素的值

需要注意的是,如果结果集包含多个元素,那么赋值的时候,将对其中所有的元素赋值;取值的时候,则是只取出第一个元素的值

[注意].text()例外,它取出所有元素的text内容

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
仿迅雷焦点广告效果(JQuery版)
Nov 19 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
Mar 17 Javascript
javascript中节点的最近的相关节点访问方法
Mar 20 Javascript
js实现简单的购物车有图有代码
May 26 Javascript
jQuery异步加载数据并添加事件示例
Aug 24 Javascript
JS组件Form表单验证神器BootstrapValidator
Jan 26 Javascript
BootstrapValidator不触发校验的实现代码
Sep 28 Javascript
js 性能优化之快速响应的用户界面
Feb 15 Javascript
详解JavaScript中的六种错误类型
Sep 21 Javascript
JS校验与最终登陆界面功能完整示例
Jan 13 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
Jun 07 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 Javascript
Node.js读取文件内容示例
Mar 07 #Javascript
JQuery查找子元素find()和遍历集合each的方法总结
Mar 07 #Javascript
AngularJS的Filter的示例详解
Mar 07 #Javascript
js上下视差滚动简单实现代码
Mar 07 #Javascript
js实现下一页页码效果
Mar 07 #Javascript
原生JS中slice()方法和splice()区别
Mar 06 #Javascript
浅析vue component 组件使用
Mar 06 #Javascript
You might like
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
js 函数的副作用分析
2011/08/23 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python最长公共子串算法实例
2015/03/07 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
Python实现Linux中的du命令
2017/06/12 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
交通安全标语
2014/06/06 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android
Java实现聊天机器人完善版
2021/07/04 Java/Android
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技