jQuery 链
jQuery 的链式调用(Chaining)让你在同一行里对同一组元素连续执行多个方法,例如 $('#box').css(...).slideUp(...).slideDown(...)。代码更短、更易读,还能减少重复选取元素的开销。
为什么可以链式调用
jQuery 的大部分方法执行完会返回当前的 jQuery 对象(而不是返回 undefined),因此方法后面可以继续跟 .方法(),一个接一个像链条一样连下去:
// 普通写法:每个方法都重新写一次选择器
$('#box').css('color', 'red');
$('#box').slideUp(800);
$('#box').slideDown(800);
// 链式写法:一行完成同样效果
$('#box').css('color', 'red').slideUp(800).slideDown(800);
链的换行与缩进
链条太长时可以换行书写,浏览器会把它们当成同一句,风格也更清晰:
$('#box')
.css('color', 'red') // 文字变红
.slideUp(800) // 向上收起
.slideDown(800); // 再向下展开(动画排队依次播放)
完整示例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<!-- 引入 jQuery(https://example.com 为占位地址,实际使用时请替换为真实 CDN 或本地文件) -->
<script src="https://example.com/jquery.min.js"></script>
</head>
<body>
<button id="run">播放链式动画</button>
<p id="box" style="background:#d9ead3;padding:10px;">观察我的一系列变化</p>
<script>
$(function () {
$('#run').click(function () {
// 效果:文字先变蓝并加粗,再收起、展开,最后添加边框
$('#box')
.css('color', 'blue')
.css('font-weight', 'bold')
.slideUp(600)
.slideDown(600)
.css('border', '2px solid green');
});
});
</script>
</body>
</html>
注意:不是所有方法都能链
只有返回 jQuery 对象的方法才能继续链下去。取值型方法返回的是普通值(字符串、数字等),链条在此中断:
// text() 无参数时返回文本内容(字符串),后面不能再接 .方法()
var txt = $('#box').text(); // 正确:得到字符串
// $('#box').text().css(...) // 错误:字符串没有 css 方法
// 赋值型方法返回 jQuery 对象,可以继续链
$('#box').text('新内容').css('color', 'red'); // 正确
链式的意义
- 简洁:省去重复书写
$(选择器)。 - 高效:只查询一次元素,后续操作都在缓存的对象上进行。
- 结合动画队列,链还能表达"先做 A、再做 B"的顺序逻辑。
小结
链式调用把多个 jQuery 方法串成一行,代码精简且高效;前提是链上的方法必须返回 jQuery 对象。至此,jQuery 的选择器、事件、效果与链式调用已经串成完整体系,可以开始构建交互页面了。