Dmitri Gaskin on jQuery (2008)
摘要
12岁的Drupal核心开发者Dmitri Gaskin在2008年的TechTalk上演示了jQuery的核心用法,包括选择器、遍历、DOM操作和CSS操作,强调“写更少的代码,做更多的事”。
<p><a href="https://lobste.rs/s/67043h/dmitri_gaskin_on_jquery_2008">Comments</a></p>
查看缓存全文
缓存时间: 2026/07/27 01:41
TL;DR: 12岁的Drupal核心开发者Dmitri Gaskin在2008年的TechTalk上演示了jQuery的基础用法,包括选择器、遍历、DOM操作和CSS操作,强调“写更少的代码,做更多的事”。
## 引言
霍桑介绍这位年轻的演讲者Dmitri Gaskin,他是一名12岁的Drupal核心开发者。Gaskin先简单自我介绍,随后直接进入jQuery主题。他询问听众中多少人会写JavaScript,确认大部分都会后,跳过基础直接进入jQuery。
## jQuery基础与$函数
jQuery的核心是美元符号函数`$()`。它有三种常见用法:
- **传入CSS选择器**:如`$('table')`返回表格元素。
- **传入HTML字符串**:创建DOM元素(因时间有限未详细演示)。
- **传入DOM元素**:直接包装现有DOM节点。
基本用法演示:Gaskin打开一个包含开源项目列表的表格,在控制台输入`$('table')`返回表格,鼠标悬停会高亮。`$('tr')`返回所有表格行。`$('.project')`、`$('.project-name')`、`$('.project-ideas')`分别通过类名选取。通过ID选取:`$('#asf')`选中Apache Software Foundation行。
## 遍历(Traversal)
遍历方法用于在DOM中导航,返回新的jQuery对象。
- **`.children([expr])`**:获取所有子元素,可用表达式过滤。
- **`.parent([expr])`**:获取直接父元素。
- **`.parents([expr])`**:获取所有祖先元素中匹配表达式的。
- **`.find(expr)`**:查找后代中匹配表达式的元素,等同于`.children(expr)`(但作用域更深)。
- **`.filter(expr)`**:从当前选择中过滤出匹配表达式的元素。也可传入函数,`this`指向当前元素,返回`true`保留。
- **`.eq(index)`**:获取第index个元素(从0开始)。
- **`.not(expr)`**:排除匹配表达式的元素。
- **`.add(expr)`**:将额外匹配表达式的元素加入当前选择。
- **`.next()`**:获取下一个兄弟元素。
- **`.nextAll()`**:获取之后所有兄弟元素。
- **`.prev()`**:获取前一个兄弟元素。
- **`.prevAll()`**:获取之前所有兄弟元素。
- **`.slice(start, end)`**:类似数组切片。
- **`.siblings()`**:获取所有兄弟元素。
- **`.end()`**:回退到前一个选择(.filter等破坏性操作前)。
- **`.addBack()`**:合并当前选择和上一个选择。
演示:`$('#adium').next()`得到下一行;`$('#adium').children()`得到两个单元格;`$('#adium').prevAll()`得到之前所有行。
## DOM操作(Manipulation)
- **`.html(val)`**:设置元素的innerHTML(不转义)。无参数时返回当前HTML。
- **`.text(val)`**:设置文本内容(自动转义HTML)。无参数时返回纯文本。
- **`.append(content)`**:在末尾追加内容。
- **`.appendTo(target)`**:将当前元素追加到目标元素末尾。
- **`.prepend(content)`**:在开头插入内容。
- **`.after(content)`**:在元素后面插入(兄弟级别)。
- **`.before(content)`**:在元素前面插入。
- **`.wrap(html)`**:用HTML包裹元素,自动找到最内层。
- **`.empty()`**:清空元素内容(包括子节点和文本)。
- **`.remove([expr])`**:从DOM中移除元素,可带表达式过滤(不过推荐先用.filter)。
演示:`$('#drupal').html('<b>Drupal</b>')`设置HTML;`.text()`会转义;`$('#adium').remove()`删除该行;`$('#wesnoth').empty()`清空内容但保留元素。
## 选择器(Selectors)
jQuery支持CSS3选择器,包括:
- 基础:`#id`、`.class`、`元素名`。
- 伪类:`:first`、`:last`、`:even`、`:odd`、`:contains(text)`、`:empty`、`:hidden`、`:visible`。
- 关系:`parent > child`(直接子元素)。
- 否定:`:not(expr)`(可嵌套)。
- 属性选择器:`[attribute]`、`[attribute=value]`、`[attribute!=value]`。
演示:`$('tr:first')`取第一行;`$('tbody > tr:first')`取tbody下第一行;等等。
## CSS属性与样式操作
- **`.attr(name)`**:获取属性值。设置时:`.attr(name, value)` 或 `.attr(map)`(多个属性)。
- **`.removeAttr(name)`**:移除属性。
- **`.val()`**:用于表单元素,获取或设置value。
- **`.css(name, value)`**:设置CSS样式。也可用对象,属性名用驼峰式(如`backgroundColor`)或带引号的连字符形式。
- **`.addClass(class)`**、**`.removeClass(class)`**、**`.toggleClass(class)`**:class操作。
演示:`$('#asf').css({backgroundColor: 'green', color: 'orange'})`设置背景和文字颜色(文字因a元素可能不生效)。`$('#asf').height()`返回高度等。
## 其他有用方法
- **`.html()`**(无参数返回HTML内容)
- **`.text()`**(返回纯文本)
- **`.val()`**(返回输入值)
- **`.height()`**(返回高度)
这些方法返回非jQuery对象的原生值。
演讲最后提到插件和高级jQuery,但因为时间有限未深入,Gaskin快速结束演示。整场演讲展示了jQuery如何让JavaScript开发更高效。
---
Source: [YouTube视频](https://www.youtube.com/watch?v=8mwKq7_JlS8)
相似文章
@VincentLogic: 发现个前端圈公认的动画神器,68K stars 真的不是吹的! anime.js —— 一个轻量级但功能极其强大的 JavaScript 动画引擎。 前端兄弟们又来享福了,这玩意儿简直是“动画师的瑞士军刀”: 全能型选手 不管是 CSS …
Anime.js 是一个轻量级但功能强大的 JavaScript 动画引擎,支持 CSS、SVG、DOM 属性及 JavaScript 对象动画,具有直观的 API、时间线系统、滚动观察器、拖拽和响应式动画等特性,在 GitHub 上拥有 68K stars,是前端开发者和交互设计师的常用工具。
@VincentLogic: 以前做前端,为了个加载动画,要么到处找 GIF,要么自己写 CSS 写到头秃。 最近看到这个 math-curve-loaders 开源库,完全是用数学公式生成的动效。 我看了一下,玫瑰曲线、李萨如曲线这些数学图形,动效极其优雅。纯 HT…
介绍了一个名为 math-curve-loaders 的开源前端库,利用数学公式(如玫瑰曲线、李萨如曲线)生成优雅的加载动画,纯 HTML+CSS 实现,零依赖,并带有可视化调试面板,可以实时调整参数并一键复制代码。
@hhmy27: 分享下 Kimi k2.6 的编程体验 这次主打审美能力升级,我直接 vibe 了一下Interface Craft 这个页面动效,效果还不错的 我看了下代码,主要是它会用 Framer 和 GASP 这些技术,所以页面效果看起来还蛮有质…
Kimi k2.6 improves aesthetic coding skills, generating polished Interface Craft page animations using Framer and GSAP.
HTML 的新能力
文章重点介绍了新的 HTML 特性,如 <dialog>、弹出框(popovers)和分组 <details>,这些特性无需 JavaScript 即可实现动态功能,展示了 Web 标准和浏览器兼容性的进步。
Canvas 中的 HTML 演示
来自 Chrome DevRel 团队的 CSS 和 Web UI 演示合集,包括 Canvas 中的 HTML 演示。