jQuery 入门学习教程,从入门到精通,jQuery工具方法 —— 全面知识点详解与案例代码(6)
jQuery工具方法 —— 全面知识点详解与案例代码
一、常用工具方法概述
jQuery 提供了一系列实用的静态工具方法(以 $.xxx 形式调用),用于类型判断、数据处理、AJAX 请求、函数绑定等,无需操作 DOM 即可使用。
✅ 所有工具方法均通过
jQuery或$对象直接调用,如$.type(),$.ajax()。
二、类型检查
2.1 $.type(obj)
返回对象的内部 [[Class]] 类型(小写字符串),比 typeof 更精确。
支持类型:
"array","string","number","boolean","object","function","undefined","null","date","regexp"等。
示例:
console.log($.type([])); // "array"
console.log($.type(null)); // "null"
console.log($.type(new Date())); // "date"
console.log($.type(/abc/)); // "regexp"
⚠️ 注意:
typeof null返回"object",但$.type(null)正确返回"null"。
三、类型转换
3.1 $.parseJSON(str)
将 JSON 字符串安全解析为 JavaScript 对象(jQuery 3.0+ 已废弃,推荐使用原生 JSON.parse())。
示例(兼容旧版):
var jsonStr = '{"name":"张三","age":25}';
var obj = $.parseJSON ? $.parseJSON(jsonStr) : JSON.parse(jsonStr);
console.log(obj.name); // "张三"
✅ 现代项目建议直接使用
JSON.parse(),但了解此方法有助于维护旧代码。
四、复制对象
4.1 $.extend([deep], target, object1, [objectN])
合并一个或多个对象到目标对象。
- 浅拷贝:默认行为,只复制第一层属性。
- 深拷贝:第一个参数传
true。
示例:浅拷贝 vs 深拷贝
var obj1 = { a: 1, b: { c: 2 } };
var obj2 = {};
// 浅拷贝
$.extend(obj2, obj1);
obj2.b.c = 999;
console.log(obj1.b.c); // 999(引用共享)
// 深拷贝
var obj3 = {};
$.extend(true, obj3, obj1);
obj3.b.c = 888;
console.log(obj1.b.c); // 999(独立副本)
✅ 常用于插件配置合并:
var settings = $.extend({}, defaults, options);
五、修改 this 指向
5.1 $.proxy(function, context, [additionalArguments])
强制指定函数执行时的 this 值,常用于事件回调中保持上下文。
示例:
var obj = {
name: 'MyApp',
init: function() {
// 普通绑定:this 指向 button
// $('#btn').on('click', this.handleClick);
// 使用 proxy:this 指向 obj
$('#btn').on('click', $.proxy(this.handleClick, this));
},
handleClick: function(e) {
console.log(this.name); // "MyApp"
}
};
obj.init();
✅ 等价于 ES6 的箭头函数或
bind(),但在旧浏览器中更兼容。
六、解决框架冲突
6.1 $.noConflict([removeAll])
释放 $ 符号控制权,避免与其他库(如 Prototype、Zepto)冲突。
示例:
<script src="prototype.js"></script> <!-- 也定义了 $ -->
<script src="jquery.js"></script>
<script>
var jq = $.noConflict(); // 释放 $,返回 jQuery 对象
jq('#box').hide(); // 使用 jq 代替 $
// 或完全恢复 $
// $.noConflict(true); // 同时释放 jQuery 变量(慎用)
</script>
✅ 在多库共存项目中必备。
七、AJAX 工具方法
7.1 $.ajax(url, [settings]) 或 $.ajax(settings)
底层 AJAX 接口,高度可配置。
常用配置项:
url: 请求地址type: 请求方法(GET/POST)data: 发送数据dataType: 期望返回类型(json, html, xml, text)success/error/complete: 回调函数
示例:POST 提交 JSON 数据
$.ajax({
url: '/api/user',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ name: '李四', age: 30 }),
dataType: 'json',
success: function(res) {
console.log('成功:', res);
},
error: function(xhr, status, err) {
console.error('失败:', err);
}
});
7.2 高级 AJAX 接口(快捷方法)
| 方法 | 说明 |
|---|---|
$.get(url, [data], [success]) |
GET 请求 |
$.post(url, [data], [success]) |
POST 请求 |
$.getJSON(url, [data], [success]) |
GET JSON |
$.getScript(url, [success]) |
动态加载 JS |
示例:加载 JSON 数据
$.getJSON('/api/data.json', function(data) {
console.log('数据:', data);
});
八、全局 AJAX 事件
在 document 上监听 AJAX 全局状态,适用于加载提示、错误统一处理。
| 事件 | 触发时机 |
|---|---|
ajaxStart |
第一个 AJAX 开始 |
ajaxStop |
所有 AJAX 完成 |
ajaxError |
任一 AJAX 失败 |
示例:全局加载提示
<div id="loading" style="display:none;">加载中...</div>
<script>
$(document).ajaxStart(function() {
$('#loading').show();
}).ajaxStop(function() {
$('#loading').hide();
}).ajaxError(function(e, xhr, settings, err) {
alert('请求失败: ' + err);
});
</script>
⚠️ 注意:只有通过 jQuery 发起的 AJAX 才会触发这些事件。
九、扩展工具方法
9.1 $.fn.extend(object)
扩展 jQuery 实例方法(插件开发常用)。
9.2 $.extend(object)
扩展 jQuery 静态方法。
示例:自定义工具方法
// 静态方法:$.formatDate()
$.extend({
formatDate: function(date) {
return date.getFullYear() + '-' +
String(date.getMonth() + 1).padStart(2, '0') + '-' +
String(date.getDate()).padStart(2, '0');
}
});
// 调用
console.log($.formatDate(new Date())); // "2025-10-29"
// 实例方法:$('div').highlight()
$.fn.extend({
highlight: function(color = 'yellow') {
return this.css('background-color', color);
}
});
$('#box').highlight('lightblue');
十、字符串、数组、对象工具方法
⚠️ 注意:jQuery 未提供专门的字符串/数组工具方法(如 trim、map 等),这些功能应使用原生 JavaScript(ES5/ES6)。
但可通过以下方式结合使用:
10.1 数组工具(借助原生 + jQuery)
$.each(array, callback):遍历数组或对象(可中断)$.map(array, callback):映射转换(返回新数组)
示例:$.each 与 $.map
var arr = [1, 2, 3];
// $.each:遍历
$.each(arr, function(index, value) {
console.log(index, value);
// return false; // 可提前退出
});
// $.map:转换
var doubled = $.map(arr, function(val) {
return val * 2;
});
console.log(doubled); // [2, 4, 6]
✅
$.each支持对象遍历;$.map会自动展开返回的数组(如返回[1,2]会被展开为两个元素)。
10.2 字符串处理(推荐原生)
// 原生方法已足够
' hello '.trim(); // "hello"
'Hello'.toLowerCase(); // "hello"
10.3 对象工具
$.isEmptyObject(obj):判断是否为空对象$.isPlainObject(obj):判断是否为纯对象({}或new Object)
示例:
console.log($.isEmptyObject({})); // true
console.log($.isEmptyObject({a:1})); // false
console.log($.isPlainObject(new Date())); // false
console.log($.isPlainObject({})); // true
十一、jQuery 安装与部署(复用第5章,此处简述)
步骤:
-
CDN 引入(开发):
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> -
本地部署(生产):
- 下载
jquery-3.6.0.min.js - 放入项目
/js/目录 - 引入:
<script src="/js/jquery-3.6.0.min.js"></script>
- 下载
-
验证:
console.log(typeof $); // "function"
✅ 确保在使用任何
$.xxx工具方法前已加载 jQuery。
本章小结
| 类别 | 核心方法 | 用途 |
|---|---|---|
| 类型检查 | $.type() |
精确判断数据类型 |
| 对象操作 | $.extend() |
合并/深拷贝对象 |
| 函数绑定 | $.proxy() |
固定 this 上下文 |
| 冲突处理 | $.noConflict() |
释放 $ 控制权 |
| AJAX | $.ajax(), $.get(), $.post() |
发起异步请求 |
| 全局事件 | ajaxStart/Stop/Error |
统一管理 AJAX 状态 |
| 扩展 | $.extend(), $.fn.extend() |
自定义工具或插件 |
| 遍历 | $.each(), $.map() |
处理数组/对象 |
| 对象判断 | $.isEmptyObject(), $.isPlainObject() |
对象类型检测 |
💡 最佳实践:
- 优先使用原生 JS 处理字符串/数组;
- AJAX 使用
$.ajax()配合全局事件实现用户体验优化;- 插件开发务必使用
$.fn.extend();- 多库共存时立即调用
$.noConflict()。
更多推荐



所有评论(0)