使用 jQuery 插件设计模式调用方法

2023-11-22

我一直在使用 jQuery Boilerplate 来开发插件,但我不明白的一件事是如何从插件外部调用方法。

作为参考,这里是我正在讨论的样板代码:http://jqueryboilerplate.com/

在我的小提琴中,

http://jsfiddle.net/D9JSQ/2/

这是代码:

;(function ( $, window, document, undefined ) {

    var pluginName = 'test';
    var defaults;

    function Plugin(element, options) {
        this.element = element;

        this.options = $.extend( {}, defaults, options) ;

        this._name = pluginName;

        this.init();
    }

    Plugin.prototype = {
        init: function() {
            this.hello();
        },
        hello : function() {
            document.write('hello');
        },
        goodbye : function() {
            document.write('goodbye');
        }
    }


    $.fn[pluginName] = function ( options ) {
            return this.each(function () {
                if (!$.data(this, 'plugin_' + pluginName)) {
                    $.data(this, 'plugin_' + pluginName, 
                    new Plugin( this, options ));
                }
            });
    }


})( jQuery, window, document );

$(document).ready(function() {
    $("#foo").test();
    $("#foo").test('goodbye');
});

我尝试使用以下语法调用再见方法:

$("#foo").test('goodbye')

我该如何实现这一目标?提前致谢


您必须获得对该类的引用才能使用该插件结构调用它的方法。

http://jsfiddle.net/D9JSQ/3/

$(document).ready(function() {
    var test = $("#foo").test().data("plugin_test");
    test.goodbye();
});

为了做你想做的事,你必须摆脱 document.write 来测试它。

http://jsfiddle.net/D9JSQ/8/

;
(function($, window, document, undefined) {

    var pluginName = 'test';
    var defaults;

    function Plugin(element, options) {
        this.element = element;

        this.options = $.extend({}, defaults, options);

        this._name = pluginName;

        this.init();
    }

    Plugin.prototype = {
        init: function(name) {
            this.hello();
        },
        hello: function(name) {
            console.log('hello');
        },
        goodbye: function(name) {
            console.log('goodbye');
        }
    }


    $.fn[pluginName] = function(options) {
        return this.each(function() {
            if (!$.data(this, 'plugin_' + pluginName)) {
                $.data(this, 'plugin_' + pluginName, new Plugin(this, options));
            }
            else if ($.isFunction(Plugin.prototype[options])) {
                $.data(this, 'plugin_' + pluginName)[options]();
            }
        });
    }


})(jQuery, window, document);

$(document).ready(function() {
    $("#foo").test();
    $("#foo").test('goodbye');
});​

查看控制台以获取信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jQuery 插件设计模式调用方法 的相关文章

  • 在 jquery.simplemodal 中使用 iframe,当弹出窗口关闭时 iframe 会重新加载

    var pt popup options function pt popup iframe sURL sOkFunction pt popup okfunction sOkFunction pt msgBox css width 700px
  • jQuery 中的连接选择器?

    我不确定 连接 是否是正确的术语 但类似这样 a b c d click click on all of them 基本上我有一长串的东西 但我不能对它们应用一个类 As in CSS http www w3 org TR CSS2 sel
  • CSS 中“!important”的反义词是什么?

    我正在构建一个 jQuery 插件 它使用 CSS 样式向嵌套 DIV 标签添加颜色和边距 由于我宁愿将插件保留为单个文件 因此我的代码使用 jQuery 将这些颜色和边距作为 CSS 属性直接添加到 DIV 中 css 方法 这些属性的值
  • 与现有表单完美集成的多文件上传器

    我知道这个问题可能太笼统了 但在花了一整天的时间思考这个问题之后 我对这个问题感到非常困惑 任何人都知道上传插件 那会与现有形式轻松集成 我尝试过的所有上传器插件 jQuery 文件上传 Plupload Uploadify Dropzon
  • 我无法自动播放 vimeo 视频(移动设备)

    我试图autoplay包含在的视频iframe在移动设备上 该应用程序运行良好 但用户必须单击 iFrame 内的按钮才能播放视频 我已经尝试使用 autoplay 1 中的参数iframe但它在移动设备上不起作用 在桌面上也很好 你能帮助
  • 单击 DIV 时滚动到顶部? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Web API 复杂参数属性均为 null

    我有一个 Web API 服务调用可以更新用户的首选项 不幸的是 当我从 jQuery ajax 调用中调用此 POST 方法时 请求参数对象的属性始终为 null 或默认值 而不是传入的值 如果我使用 REST 客户端调用相同的方法 我使
  • 动态添加项目到放大弹出画廊

    有没有办法动态添加图库项目华丽的弹出窗口 http dimsemenov com plugins magnific popup 那已经开放了 或更新当前项目 找不到关于 in 的任何内容插件文档 http dimsemenov com pl
  • 如何在 jQuery.knob 中添加值后缀

    我有问题jQuery knob http anthonyterrien com knob 我需要添加一个Sufixx至旋钮中的值 例如 我需要一个后缀 数值后 我只是输入数值字段 它会显示 但此时旋钮不会显示状态 它不会显示旋钮状态 但后缀
  • 大文本字段的 jQuery AJAX 上传进度

    是否可以使用 jQuery ajax 获取具有非常大文本字段的表单的上传进度 我认为客户端知道已经发送了多少字节 但是当我谷歌时 我只找到使用服务器站点代码的文件上传解决方案 这是我的 ajax 请求 ajax type POST url
  • 如何动态/响应式更改 jQuery 日期选择器的月数

    我问这个问题是因为我在另一个问题中找不到答案 如果有请给我链接 我有一个 jQuery Datepicker 在其上设置参数 numberOfMonths 2 如果屏幕大小低于某个数字 例如 768px 我希望它为 1 我试过 window
  • 单击事件不适用于动态生成的元素[重复]

    这个问题在这里已经有答案了
  • 在 Vue js 中获取 JSON 属性时出错

    我在使用 Vue js 时遇到了一个奇怪的行为 我进行 ajax 调用 将结果 一些 JSON 存储到名为 modello 的 Vue 数据属性中 lineaGialla selected false descrizione Questa
  • jQuery POST 到 CakePHP $this->data

    我正在尝试使用 jQuery 后置函数将表单发布到 CakePHP 脚本 像这样 jQuery submit btn click function Code to prevent redirect dataString test testd
  • 使用jquery更改asp.net图像url

    我正在尝试使用 jQuery 每 15 秒更改一次图像 以便这适用于所有浏览器 我尝试删除此标记并将 div 留空并使用 jQuery 更改背景图像 url gt 如何使用 jQuery 更改图像 url 鉴于此标记 div div
  • 通过电子邮件发送在 HTML5 画布上创建的图像

    我有一个画布 用户可以通过交互来更改设计 现在 用户完成更改后 可以提交他的设计及其电子邮件 ID 但为了提交设计 我使用以下方法将画布转换为图像http www nihilogic dk labs canvas2image http ww
  • 识别http链接并创建锚标记

    我正在尝试解析一些字符串 它嵌入了一些 http 链接 我想使用 jquery 在此字符串中动态创建锚标记 然后将它们显示在前端 以便用户可以单击它们 有没有办法做到这一点 Thanks 你可以这样做 function get the st
  • jQuery AJAX post 收到 405 错误(不允许 HTTP 动词 POST)

    我有以下 jQuery 帖子到 ASP NET webmethod ajax type POST url AjaxWebMethods aspx UpdNote contentType application json charset ut
  • 如何使用 jQuery 和 .ajax 方法发送数组而不转义括号?

    我试图发送具有多个值的相同参数名称 但即使在阅读了 SO 上的帖子后也无法弄清楚如何做到这一点 我想要一个数组destination input var myObject search zip params search zip searc
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示

随机推荐

  • git rebase 删除提交

    我的 git 存储库中有以下更改历史记录 X Y Z A B C 我从代码 Z 的基础开始工作 并进行了 A B 和 C 三个更改 这些更改中的每一个都已作为单独的评论上传到 Gerrit 上 并且每个更改都取决于之前的更改 经过审查后 我
  • 视频元素在 IE8 中不显示?

    我想在所有浏览器中嵌入视频元素 但它在除 IE8 之外的所有浏览器中都可以正常工作 这里 我使用 mediaelement js 库来实现 首先 需要尝试以下几件事 确保 IE8 上安装了 Flash 这是旧版浏览器中 Mediaeleme
  • 无法在 Android Studio 中打开密钥库 - “找到冗余长度字节”

    我无法在 Android Studio 中打开现有的密钥库文件或使用jarsigner从命令行 在这两种情况下 错误消息都是 java security cert CertificateException 无法初始化 java io IOE
  • 如何让 AngularJS BLOB 下载 PDF?

    大家好 我对使用 AngularJS 进行开发非常陌生 我正在尝试弄清楚如何使用 BLOB 将 PDF 下载到本地计算机 我已经让它可以使用 JSON 现在我需要一个 PDF 我写了一些代码 但它似乎不起作用 html
  • 如何知道opencv中SSE2是否激活

    我有一个版本的 OpenCV 2 4 10 库 它是为 Windows 上的 Intel X64 构建的 我如何知道 CV SSE2 是否处于活动状态 我没有代码 我只有库 DLL 和标头 Thanks 您可以使用该功能检查SSE2是否启用
  • 如何在文档的 部分创建 Angular 指令?

    我是新来的angular js 我正在尝试创建一个指令来添加一些标题和元标记html 文档的一部分 但我遇到了一些麻烦 My index html文件如下
  • Rails 3 - Amazon S3 Paperclip EU 问题

    我在用着 Paperclip 2 3 16 Rails 3 0 9 Ruby 1 9 2 AWS S3 0 6 2 我正在尝试使用回形针上传到基于欧盟 爱尔兰 的存储桶 我的模型中有以下内容 has attached file image
  • 在其他项目中重用 Cucumber-JVM 步骤定义

    如何在其他项目中重用 Cucumber JVM 步骤定义来测试一些典型的 Web 操作 重点是 我创建了一些 java 项目 仅使用典型场景操作的步骤定义实现 例如 When I follow the link some link Then
  • Razor HTML 条件输出

    我有一个要作为主内容输出的项目列表 下面不包括主内容 每个项目都有 3 个属性 部分名称 标签和值 每个项目都包含在 a 中 每次部分名称更改时 我都必须打开 a 并关闭前一个 如果有的话 我正在使用带有以下代码的 Razor 视图 for
  • 保存为表单中的文件

    使用 Canvas 方法 toDataURL 我希望能够将图像保存在服务器端 使用 Rails 有了 toDataURL 字符串 如何在 HTML 表单中可以将其视为文件附件的表单中使用它 使用 jQuery Paperclip dataf
  • Intl.DateTimeFormat 返回超过 24 小时

    我有以下 Unix 时间戳 1611328500000 Fri Jan 22 2021 10 15 00 GMT 0500 Eastern Standard Time 我需要以韩国标准时间显示它 为此 我正在使用Intl DateTimeF
  • 在 Chrome 中拦截对 console.log 的调用

    我有一个无法更改的脚本 它会产生很多console log来电 我想添加另一层并在调用包含某些字符串时进行响应 这在 Firefox 中有效 但会抛出 Illegal invocation Chrome 中第 4 行出现错误 var old
  • 在 ERB 块中的字符串内包含 ERB 分隔符

    我正在编写一个显示代码以及输出的样式指南 目前它的结构使得代码只需要描述一次 并以原始版本和解释版本显示 如下所示
  • C/C++ 中的简单虚拟文件系统

    我想实现一个非常简单的虚拟文件系统 VFS 它支持一些基本的文件系统操作 例如 fwrite fopen fput 等 VFS 是某些具体操作系统之上的抽象层 例如Windows Linux 等 现在假设 fopen 界面看起来像这样 FI
  • 为什么 ORACLE 不允许在命令中使用连续的换行符?

    I write CREATE TABLE Person name CHAR 10 ssn INTEGER 并将其保存到文件 a sql 如果我然后通过在 SQL Plus 命令提示符中键入 a 来运行它 它会告诉我以 ssn 开头的行不被识
  • 将项目添加到地图列表中的 Kotlin 惯用方式

    我有一个MutableMap
  • 如何使用 ggplot2 绘制具有 (x,y,r,g,b) 坐标的图像?

    我有一个数据框image rgb 我已将图像的每个坐标的 r g b 值加载到其中 使用jpeg and reshape包 现在看起来像 gt head image rgb y x r g b 1 1 1 0 1372549 0 12549
  • IdentityServer4在asp.net core中注册UserService并从数据库中获取用户

    我已经搜索了所有关于如何注册UserService在asp net core中使用IdentityServer4 但我似乎找不到正确的方法 这是找到的注册InMemoryUsers的代码here 但是我想访问我的 MSSQL DB 中的用户
  • UIWebView加载进度并调整网页以适应视图页面?

    我正在使用 UIWebView 加载网页 有3个问题 1 UIWebView加载页面时是否可以跟踪百分比进度 2 我注意到 当 Safari 加载网页时 URL 文本字段会显示一个蓝色背景进度指示器 告诉用户加载网页的百分比 这有什么技术
  • 使用 jQuery 插件设计模式调用方法

    我一直在使用 jQuery Boilerplate 来开发插件 但我不明白的一件事是如何从插件外部调用方法 作为参考 这里是我正在讨论的样板代码 http jqueryboilerplate com 在我的小提琴中 http jsfiddl