jQuery 制作插件

最后更新于:2022-04-02 03:18:40

[TOC] ## 简单 demo 1. 无链式调用 ``` $.fn.changeStyle = function(colorStr){ this.css("color",colorStr); } $(".change").changeStyle("red"); ``` 2. 链式调用 ``` $.fn.changeStyle=function(colorStr){ this.css('color',colorStr); return this; } $(".change").changeStyle("red").addClass("bgblue"); //文字变红,且添加背景为蓝色 ``` ## 防止$符号污染的jQuery插件 ``` (function($){ $.fn.changeStyle = function(colorStr){ this.css("color",colorStr); return this; } }(jQuery)); $(".change").changeStyle("red").addClass("bgblue"); ``` ## 传参插件 1. 直接传参 ``` (function($){ $.fn.changeStyle = function(colorStr,fontSize){ this.css("color",colorStr).css("fontSize",fontSize+"px"); return this; } }(jQuery)); $(".change").changeStyle("red",32); ``` 2. 通过对象传值 ``` (function($){ $.fn.changeStyle = function(option){ this.css("color",option.colorStr).css("fontSize",option.fontSize); return this; } }(jQuery)); $(".change").changeStyle({ colorStr:'red', fontSize:32, }); ``` 3. 通过 `$.extend`参数设置默认值 [推荐方案] ``` (function ($) { $.fn.changeStyle = function (option) { var defaultSetting = {colorStr: "green", fontSize: 12}; var setting = $.extend(defaultSetting, option); //合并两个对象,后面的值覆盖前面的值 this.css("color", setting.colorStr).css("fontSize", setting.fontSize + "px"); return this; } }(jQuery)); $(".change").changeStyle({ colorStr: 'red', fontSize: 32, }); ```
';