编写自己的jQuery扩展(插件)

扩展jQuery插件的编程方法 通过扩展jQuery插件,您可以为jQuery添加自定义功能,以适应特定的需求。通过以上步骤,您可以编写扩展jQuery插件的代码,并在您的网页中使用它们。通常,一个jQuery插件应该包含在自执行的函数闭包中,以确保插件代码不会污染全局命名空间。一旦您定义了插件方法,就可以在您的HTML页面中使用它们了。您可以通过选择器选择要应用插件的元素,并使用插件方法来操作它们。您还可以扩展您的插件,使其接受选项参数。接下来,您可以在插件结构中定义您的自定义方法。的插件方法,它将选定元素的背景色设置为黄色。 阅读详情

就我目前所知,编写jQuery扩展(插件)有三种方式

  • 扩展jQuery本身的方法,$.extend
  • 扩展jQuery对象的方法,$.fn.extend
  • 扩展DataType对象的方法,[DataType].prototype,[DataType]代指String、Number...等数据类型

下面通过举例介绍具体用法

1.$.extend,以一个页面弹窗为例:

//$.extend有两种写法,注意扩展时funcName=function()和funcName:function()的区别

//1. $.funcName = function(){},一般用于定义单个扩展(插件)
$.popUp = function (text, type, second = 2) {
    var types = {
        'info': {'background': "#90c24f"},
        'warning': {'background': "#f99e2b"},
        'error': {'background': "#f06a6a"}
    }
    type = type in types ? type : 'info'
    $p = $('<p></p>').text('{0}:{1}'.format(type, text)).css({ 
    //format方法也是扩展(插件),详见下文[DataType].prototype
        'color': 'white',
        'width': '400px',
        'z-index': '5',
        'height': '50px',
        'line-height': '50px',
        'text-align': 'center',
        'position': 'fixed',
        'top': '50px',
        'left': '50%',
        'margin': '3px',
        'margin-left': '-200px',
        'border-radius': '5px'
    }).css(types[type]);
    $('body').append($p);
    setTimeout(() => $p.fadeOut(), parseInt(second) * 1000)
};
 //2. $.extend({funcName1:function(){}, funcName2:function(){}}),一般用于定义多个扩展(插件)
 $.extend({
    popUp: function (text, type, second = 2) {
        ...
    },
});
//调用方式:
$.popUp("保存失败!", "error", 3)

页面弹窗

2.$.fn.extend,以一个在光标处插入文本为例:

//和$.extend一样,$.fn.extend也是同样的两种写法

//1. $.fn.funcName = function(){},一般用于定义单个扩展(插件)
$.fn.insertContent = function (myValue, t) {
    var $t = $(this)[0];
    if (document.selection) { // ie
        this.focus();
        var sel = document.selection.createRange();
        sel.text = myValue;
        this.focus();
        sel.moveStart('character', -l);
        var wee = sel.text.length;
        if (arguments.length == 2) {
            var l = $t.value.length;
            sel.moveEnd("character", wee + t);
            t <= 0 ? sel.moveStart("character", wee - 2 * t - myValue.length) : sel.moveStart("character", wee - t - myValue.length);
            sel.select();
        }
    } else if ($t.selectionStart
        || $t.selectionStart == '0') {
        var startPos = $t.selectionStart;
        var endPos = $t.selectionEnd;
        var scrollTop = $t.scrollTop;
        $t.value = $t.value.substring(0, startPos)
            + myValue
            + $t.value.substring(endPos, $t.value.length);
        this.focus();
        $t.selectionStart = startPos + myValue.length;
        $t.selectionEnd = startPos + myValue.length;
        $t.scrollTop = scrollTop;
        if (arguments.length == 2) {
            $t.setSelectionRange(startPos - t,
                $t.selectionEnd + t);
            this.focus();
        }
    } else {
        this.value += myValue;
        this.focus();
    }
}
//2. $.fn.extend({funcName1:function(){}, funcName2:function(){}}),一般用于定义多个扩展(插件)
$.fn.extend({
    insertContent: function (myValue, t) {
        ...
    },
})
//调用方式
$("#target").insertContent("text");

光标文本插入

3.[DataType].prototype,以一个文本格式化为例:

//[DataType].prototype只有一种写法
String.prototype.format = function (args) {
    var result = this;
    if (arguments.length > 0) {
        if (arguments.length == 1 && typeof (args) == "object") {
            for (var key in args) {
                if (args[key] != undefined) {
                    // noinspection Annotator
                    var reg = new RegExp("({" + key + "})", "g");
                    result = result.replace(reg, args[key]);
                }
            }
        }
        else {
            for (var i = 0; i < arguments.length; i++) {
                if (arguments[i] != undefined) {
                    // noinspection Annotator
                    var reg = new RegExp("({[" + i + "]})", "g");
                    result = result.replace(reg, arguments[i]);
                }
            }
        }
    }
    return result;
}
//调用方式
var text = '{"{0}": {1}, "{2}": "{3}"}'.format('id',1,'name','nandy')

这里写图片描述

javascript插件 js插件 立即下载

相关推荐

SRAM compiler选项中 Soft Error Repair (SER)

引起的瞬时故障,可能会影响 SRAM 中存储的数据。SER 功能通过某种机制检测并修复这些错误,从而提高存储器的可靠性。在 SRAM 编译器中,

hzmscut的博客 1154

jQuery插件的几种写法

之前在一篇求职的帖子上看过,前端面试的景点题目:jquery插件的几种写法。 这是看到的一篇总结。比较到位。详尽且简单易懂。如果之前看过jquery的源码,应该特别好理解了。 插件编写的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期维护。 一、jQuery插件开发方式 1、通过$.extend()来扩展jQuery 2、通过$.fn 向j

haliofwu的专栏 9962

阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)

本次比赛让自己在大数据的处理流程上有了更明确的认知,从数据清洗、特征工程、数据建模,每一个过程都能学到很多经验和知识,值得去历练。

weixin_46685991的博客 1万+

jq插件的编写方法(自定义jq插件)

jq插件用起来很方便,给客户端的编程带来很大的好处,节省大量的开发时间 我用Jq也有好长时间了,今天在一个项目中用一个插件的时候,忽然感觉这个插件有一个bug 这让我心生了自己写一个jq插件的想法 下面是一个例子: jQuery(以下简称JQ)是一个功能强大而又小巧的JS框架,现在很多网站都在使用JQ,本站也不例外。本文教大家如何写一个属于你自己的JQ插件。 本JQ插

农村的我的专栏 1万+

【最全】ISTQB- FL模拟题(含答案)

汇总收集的所有ISTQB基础级考题和答案

maoxuexue的博客 1万+

YOLOv13改进策略【YOLO和Mamba】| 替换骨干 Mamba-YOLOv13-T !!! 最新的发文热点

模块是模型中的一个重要组成部分,其主要作用是在模型的初始阶段对输入图像进行处理,方便后续的特征提取和目标检测。以下是对。

Limiiiing的博客 353

jQuery插件编写

jQuery插件编写的一些总结

越努力,越幸运! 9145

YOLOv11【第一章:零基础入门篇·第1节】YOLOv11核心架构深度解析与环境配置,一文搞定!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。 本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 5508

编写jQuery插件

一、插件的种类 1.1 封装对象方法的插件     这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件。此类插件可以发挥出jQuery选择器的强大优势。有相当一部分的jQuery的方法,都是在jQuery脚本库内部通过这种形式“插”在内核上的,例如parent()方法、appendTo()方法和addClass()方法等不少DOM操作方法 1.2...

ykizz的博客 1369

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 525

标准测试测试数据STDF学习笔记

本文介绍了STDF(Standard Test Data Format)文件的结构与解析方法。首先详细说明了STDF记录的组成,包括记录头类型(REC_TYP和REC_SUB)、数据类型定义、时间日期格式以及无效数据标识。重点分析了25种主要记录类型的功能、数据内容和出现位置,如FAR、MIR、MRR等关键记录。然后介绍了基于pystdf开源工具的解析方法,包括自带脚本的使用和自编程解析流程,通过事件驱动机制处理数据流。特别指出测试数据是按照PIR→PTR/MPR/FTR→PRR的循环模式组织。文章为ATE

歌颂苦难的行为是无耻的; 1513

编写jquery扩展插件

该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!陈希章 原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/06/05/1496864.html原文标题:编写jquery扩展插

陈希章@中国 720

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jquery扩展--编写jQuery插件

jquery提供了jQuery.extend()和jQuery.fn.extend()方法,来方便用户编写插件。两者的区别是jQuery.extend()方法是用来在jQuery类/命名空间上增加新函数,

defending的博客 590

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

如何进行jquery扩展?如何编写jquery插件?

有位牛人曾说,如果你要成为大神,对于jquery,就不能只停留在使用阶段。随后,果断去百度了一把,如何编写jquery插件 有两种方式: 1、使用jQuery原型,在jQuery对象上绑定方法 直接在jQuery对象上写方法,编写类库时用的原始方式 使用jQuery的扩展方法(extend) 自定义一个属性,在属性中绑定方法 2、实例化的方式,由jquery官网提供的例子 此种方式,是...

山野里的小菊花 742

自己编写JQuery扩展分页插件

背景公司分页插件用到了kkpager https://github.com/pgkk/kkpager 缺点:不是绑定Dom节点的初始化方式,单页面只能使用一个分页插件,假如一个页面有多个分页需求就不行了,前端给出来的解决方案是复制多份,假如有100个分页呢?难道复制100份?故让前端基于原有的样式重写了一个HTML分页Dom,我在此基础上修改 前端给过来的Html内容如下:<!DOCTYPE

NickWU博客 2313

扩展编写jquery插件的方法

比如要扩展验证功能(jquery.validate.js)中的 messages: { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", ...

weixin_30312659的博客 78

编写一个jQuery的扩展方法(插件)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #a{ background: red; } </style>...

weixin_30326741的博客 81

JavaScript 学习笔记之二:编写自己的jQuery扩展分页插件(分享yQuery)

最近在学习JavaScript,所以也就自己尝试着写了下基于jQuery的分页插件,下面是这个插件的展示、需求、参数、代码详解,同时也提出疑问,忘哪位路过的,指导指导。 一、基本效果如下(样式可以自己设计): 页面简单调用如下: $$.load("#sort", 0, josnData, { checkbox: false, name: "姓名", age: "年龄", ...

weixin_30381793的博客 140

JQuery插件写法的总结

  最近Web应用程序中越来越多地用到了JQuery等Web前端技术。这些技术框架有效地改善了用户的操作体验,同时也提高了开发人员构造丰富客户 端UI的效率。JQuery本身提供了丰富的操作,但是,有时候我们需要根据我们自己的业务和系统特色(风格)构造一些我们常用的前端UI组件,而 JQuery的插件给了我们一个较好的方式来构造这些UI组件,方便我们日后反复重用这些组件。 网上也有...

huyuminNo1的专栏 122

jQuery插件编写,

jQuery插件编写 jQuery插件 最近搞jquery插件的编写这里做下笔记 给jquery扩展的方式很多,看的我眼花缭乱 方式1 $.fun=function(){} 方式2 $.fn.fun=function(){} 方式3 $.extend({   fun:function(){} }) 方式4 (function ($) { $.fn.e...

weixin_30679823的博客 74
上一篇: mysql之PXC5.7.18集群系列——0.mysql单机到集群改造方案
下一篇: InnoDB内部结构——官方文档翻译
NLOneDay
博客等级 码龄9年 8粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值