我正在尝试编写一个jQuery插件,它将为调用它的对象提供其他功能/方法。我在网上阅读的所有教程(过去2个小时内一直在浏览)最多都包含如何添加选项,但不包含其他功能。
这是我想要做的:
//通过调用该div的插件将div格式化为消息容器
$("#mydiv").messagePlugin();
$("#mydiv").messagePlugin().saySomething("hello");
或类似的规定。归结为以下几点:调用插件,然后调用与该插件关联的函数。我似乎找不到找到这种方法的方法,而且我以前见过很多插件都可以这样做。
这是到目前为止我对插件的了解:
jQuery.fn.messagePlugin = function() {
return this.each(function(){
alert(this);
});
//i tried to do this, but it does not seem to work
jQuery.fn.messagePlugin.saySomething = function(message){
$(this).html(message);
}
};
我该如何实现这样的目标?
谢谢!
2013年11月18日更新:我已更改对Hari以下评论和支持的正确答案。
根据jQuery插件创作页面(http://docs.jquery.com/Plugins/Authoring),最好不要混淆jQuery和jQuery.fn命名空间。他们建议这种方法:
(function( $ ){
var methods = {
init : function(options) {
},
show : function( ) { },// IS
hide : function( ) { },// GOOD
update : function( content ) { }// !!!
};
$.fn.tooltip = function(methodOrOptions) {
if ( methods[methodOrOptions] ) {
return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
// Default to "init"
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' );
}
};
})( jQuery );
基本上,您将函数存储在数组中(作用域为包装函数),并检查输入的参数是否为字符串,如果参数为对象(或为null),则返回默认方法(此处为“ init”)。
然后您可以像这样调用方法…
$('div').tooltip(); // calls the init method
$('div').tooltip({ // calls the init method
foo : 'bar'
});
$('div').tooltip('hide'); // calls the hide method
$('div').tooltip('update', 'This is the new tooltip content!'); // calls the update method
Javascripts“ arguments”变量是所有传递的参数的数组,因此它可以与任意长度的函数参数一起使用。
问题内容: 我知道JavaScript中的语法如下: 有没有一种方法可以在jQuery中声明可以添加到元素的函数?例如: 问题答案: 从文档中: 那你做
问题 你想用 CoffeeScript 来创建 jQuery 插件。 解决方案 # 参考 jQuery $ = jQuery # 给 jQuery 添加插件对象 $.fn.extend # 把 pluginName 改成你的插件名字。 pluginName: (options) -> # 默认设置 settings = option1: true
本文向大家介绍使用js如何创建一个private方法?相关面试题,主要包含被问及使用js如何创建一个private方法?时的应答技巧和注意事项,需要的朋友参考一下 可以利用闭包实现这一点: 另外一提,根据tc39的私有方法提案目前已进入Stage 3阶段,目测很快就会在个大浏览器和node等其他js环境实装,其语法如下:
提前谢了。
问题内容: 我有2种方法可以创建using 。 要么: 要么: 除了可重用性之外,使用第二种方式的缺点是什么? 问题答案: 第一种选择使您更具灵活性: 当然会覆盖内容,而不会覆盖,但是我想这不是您的问题。 在属性名称周围加上引号会使它与较不灵活的浏览器更加兼容。
本文向大家介绍使用Vert.x Maven插件快速创建项目的方法,包括了使用Vert.x Maven插件快速创建项目的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了使用Vert.x Maven插件快速创建项目的方法,分享给大家,具体如下: 文档地址: https://reactiverse.io/vertx-maven-plugin 已有项目添加该插件 在项目 pom.xml 目录,执行