当前位置: 首页 > 面试题库 >

jQuery插件中的公共函数

萧德庸
2023-03-14
问题内容

我喜欢jQuery插件体系结构,但是,当我想保留对插件实例的引用以稍后在代码中访问属性或方法时,我发现它令人沮丧(可能是由于缺乏理解)。

编辑:我想澄清一下,我真正想做的是保留对插件中使用的方法和属性的引用,以便以后可以使用它们

让我们以AJAX加载图标为例。在更传统的OOP环境中,我可以这样做:

var myIcon = new AJAXIcon();
myIcon.start();
//some stuff
myIcon.stop();

我对象的方法和属性存储在变量中,以备后用。现在,如果我想在jQuery插件中具有相同的功能,则可以从主代码中调用它,如下所示:

$("#myId").ajaxIcon()

按照惯例,我的插件需要返回传递给我的插件的原始jQuery对象,以实现可链接性,但是如果这样做,我将失去访问插件实例的方法和属性的能力。

现在,我知道您可以在我的插件中声明一个公共函数,有点类似于

$.fn.ajaxIcon = function(options) {
    return this.each(function () {
        //do some stuff
    }
}

$.fn.ajaxIcon.stop = function() {
    //stop stuff
}

但是,在不违反返回原始jQuery对象的约定的情况下,我无法保留对要引用的插件的特定实例的引用。

我希望能够做这样的事情:

var myIcon = $("myId").ajaxIcon(); //myIcon = a reference to the ajaxIcon 
myIcon.start();
//some stuff
myIcon.stop();

有什么想法吗?


问题答案:

如果您执行以下操作:

(function($){

$.fn.myPlugin = function(options) {
    // support multiple elements
    if (this.length > 1){
        this.each(function() { $(this).myPlugin(options) });
        return this;
    }

    // private variables
    var pOne = '';
    var pTwo = '';
    // ...

    // private methods
    var foo = function() {
        // do something ...
    }
    // ...

    // public methods        
    this.initialize = function() {
        // do something ...
        return this;
    };

    this.bar = function() {
        // do something ...
    };
    return this.initialize();
}
})(jQuery);

然后,您可以访问任何公共方法:

var myPlugin = $('#id').myPlugin();

myPlugin.bar();

摘自trueevil.com 这篇非常有用的文章(2009年5月),该文章本身是learningjquery.com上这篇文章(2007年10月)的扩展。



 类似资料:
  • 注:本条为本人添加。公共函数位于 system/core/Common.php 文件中,大家可以在这里定义自己的公共函数。--IT不倒翁 CodeIgniter 使用了一些全局定义的函数来完成操作,在任何情况下你都能够使用这些函数。使用他们不需要载入任何类库或辅助函数。 is_php('version_number') is_php() 判断正在使用的PHP的版本号是否高于你所提供的 versio

  • CodeIgniter 定义了一些全局的函数,你可以在任何地方使用它们,并且不需要加载任何 类库或辅助函数。 is_php($version) 参数: $version (string) -- Version number 返回: TRUE if the running PHP version is at least the one specified or FALSE if not 返回类型:

  • 表25.4.War插件-目录配置 属性名称 类型 默认值 描述 webAppDirName String src/main/webapp 在项目目录的web应用的资源文件夹名 webAppDir File (read-only) projectDir/webAppDirName Web应用的资源路径 这些属性由一个WarPluginConvention公共对象提供

  • Java 插件会为项目添加一系列的公共属性, 如下所示, 你可以在构建脚本中像项目属性那样直接使用它们 (see ???). 表22.7.Java插件-目录属性 属性名称 类型 默认值 描述 reportsDirName String reports 在构建目录的生成报告的文件夹名 reportsDir File (read-only) buildDir/reportsDirName 该目录下会生

  • 我正在尝试将bootstrap-daterangepicker与WebPack一起使用。在我的视图文件中,我有以下内容: 在中:

  • 我有一个经过验证的谷歌客户端,我想列出其他人公用文件夹中的文件(我认为共享或不共享的文件夹是不相关的,因为它是公用的) 这是我在NodeJS中的代码 注意:文档中没有“folderId”选项:https://developers.google.com/drive/api/v3/reference/files/list-只是一个drivid选项 虽然我将corpa设置为“drive”和drive I