我喜欢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