定义jQuery函数通常需要两个步骤:一是在jQuery对象的原型链上添加函数方法(即扩展方法),二是在jQuery对象上直接添加静态函数(即工具函数)。
扩展方法
在jQuery对象的原型链上添加函数方法,可以让我们使用这些方法来操作与jQuery对象匹配的DOM元素集合。具体步骤如下:
- 使用
$.fn.extend()
或$.prototype.extend()
方法扩展原型链,如下所示:
$.fn.extend({
functionName: function() {
// 执行操作的函数代码
}
});
也可以单独使用$.fn.functionName = function() {}
语法添加扩展方法,如下所示:
$.fn.functionName = function() {
// 执行操作的函数代码
};
- 在扩展方法内部,
this
关键字指代当前jQuery对象,可以使用jQuery对象的函数方法来操作匹配的DOM元素集合。
下面是一个示例,演示如何在jQuery原型链上添加一个新的函数方法focusOnFirst()
,将匹配元素集合中的第一个元素设为焦点。
$.fn.extend({
focusOnFirst: function() {
this.eq(0).focus();
}
});
// 调用示例
$('input').focusOnFirst();
工具函数
在jQuery对象上直接添加静态函数,可以让我们通过全局调用直接使用这些函数方法。具体步骤如下:
- 在jQuery对象上添加静态函数,如下所示:
$.extend({
functionName: function() {
// 执行操作的函数代码
}
});
也可以单独使用$.functionName = function() {}
语法添加静态函数,如下所示:
$.functionName = function() {
// 执行操作的函数代码
};
- 在静态函数内部,
this
关键字未定义,无法使用jQuery对象的函数方法。
下面是一个示例,演示如何在jQuery对象上添加一个新的静态函数isMobile()
,判断当前设备是否为移动设备。
$.extend({
isMobile: function() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
});
// 调用示例
if ($.isMobile()) {
console.log('当前设备为移动设备');
}