jQuery的链式调用(Chaining),也就是在同一个jQuery对象上连续调用多个方法

一、连续操作同一元素

场景:对同一元素进行多次操作(如修改样式、添加类、动画等),无需重复选择元素。

示例代码:

$("#box").css("color", "red")          // 修改文字颜色.addClass("highlight")        // 添加类.slideUp(1000)                // 向上滑动隐藏.slideDown(1000);             // 向下滑动显示

优势:减少 DOM 查询次数,代码更简洁。

二、动画序列

场景:按顺序执行多个动画效果(如淡入、滑动、缩放等)。

示例代码:

$("#animate-element").fadeIn(500)                  // 淡入.animate({ left: "+=50px" }, 1000)  // 向右移动.fadeOut(500);                // 淡出

注意:默认情况下,动画会按顺序执行,但异步操作(如 fadeIn())不会等待前一个动画完成。若需严格顺序,可使用回调函数或 .promise()。

三、事件绑定与样式修改结合

场景:为元素绑定事件,并在事件触发时修改样式或执行其他操作。

示例代码:

$("#myButton").click(function() {$(this)                     // 当前按钮.css("background-color", "blue")  // 修改背景色.siblings()               // 选择兄弟元素.hide();                  // 隐藏兄弟元素});

四、嵌套操作与 .end() 的使用

场景:在嵌套选择后返回到上一操作的上下文。

示例代码:

$("#parent").find("li")                   // 选择子元素 <li>.css("color", "red")        // 修改子元素颜色.end()                        // 返回到 #parent.hide();                      // 隐藏父元素

五、插件开发中的链式调用

场景:在自定义插件中返回 this 以支持链式调用。

示例代码:

(function($) {$.fn.myPlugin = function(options) {return this.each(function() {$(this).css("border", "1px solid black");  // 插件逻辑});};
})(jQuery);
// 使用插件并继续链式调用
$("#element").myPlugin()                   // 调用自定义插件.addClass("custom");          // 添加类

六、多步骤表单验证

场景:对表单字段进行多步骤验证和反馈。

$("#username").on("input", function() {$(this).removeClass("error success")  // 移除旧状态.siblings(".error-message")    // 找到提示信息.text("");                     // 清空提示}).submit(function(e) {e.preventDefault();const value = $(this).val();if (value.trim() === "") {$(this).addClass("error").siblings(".error-message").text("用户名不能为空");} else {$(this).addClass("success").siblings(".error-message").text("输入有效");}});

七、动态内容操作

场景:动态添加/删除元素并应用样式或事件。

示例代码:

$("#addItem").click(function() {$("<li>New Item</li>")       // 创建新元素.appendTo("#list")         // 添加到列表.css("color", "green")     // 设置样式.on("click", function() {  // 绑定事件$(this).remove();        // 点击删除});});

注意事项

方法返回值:确保链式调用中的每个方法返回 jQuery 对象(如 .css()、.animate())。若方法返回非 jQuery 对象(如 .text()),链式调用会中断。

异步操作:动画或异步方法(如 fadeIn())不会阻塞后续代码,需通过回调或 .promise() 控制顺序。

代码格式化:链式调用支持多行写法,提高可读性:

$("#element")

 .method1()

 .method2()

 .method3();

八、运行后向上滑动在向下滑动

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://********/test/jquery.min.js">
</script>
<script>
$(document).ready(function(){$("button").click(function(){$("#p1").css("color","red").slideUp(2000).slideDown(2000);});
});
</script>
</head>
<body>
<p id="p1">察看我有什么变化</p>
<button>点击运行</button>
</body>
</html>

链式调用通过减少重复代码、优化性能并增强可读性,成为 jQuery 编程的核心实践之一。合理使用 .end()、插件开发中的 return this 以及嵌套操作,能显著提升代码效率。