我写这个插件,现在我想要这个插件的添加方法,比如这个
$。的CreateMessage()。removeMessage()
我该怎么做?
我的代码是
$(function () {
$.extend({
createtext: function (options) {
var setting = {
holder: "",
text: "",
}
if (options != null) {
$.extend(setting, options)
}
var $this = $(setting.holder)
$this.find("div#CreatetextHolder").remove()
$this.append("<div id='CreatetextHolder'><span></span><p class='Createtext'>" + setting.text + "</p></div>")
$this.find("div#CreatetextHolder").fadeIn('slow')
}
})
})
谢谢你的帮助
答案 0 :(得分:0)
$(selector).createMessage().removeMessage()
会要求您编写两个插件 - 一个用于&#39;创建&#39;另一个用于删除&#39;。
在一个插件中执行所有操作要好得多,您可以通过定位语法来实现...
$(selector).createMessage('remove');
然后问题是在插件代码中测试options
,并相应地进行分支。
目前,您测试if (options != null)
,假设options
是一个javascript普通对象,并且唯一的操作是initianisation。
但是根据我的建议允许$.createMessage('remove')
,您需要执行更广泛的测试/分支,具体取决于实际传递的参数。
例如:
$(function () {
$.extend({
createtext: function ( method, options ) {
var settings = {
holder: "",
text: ""
};
var methods = {
'init': function(options) {
var _settings = $.extend({}, settings, options);//this leaves `settings` unaffected and available for reuse in future inits.
//initialize here
},
'remove': function() {
//uninitialize here
}
}
// These tests allow `init' to be passed explicitly,
// or assumed if an options object is the only argument.
// Otherwise, a method such as 'remove' may be passed,
// with or without further parameters.
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || !method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist in jQuery.createtext');
}
}
});
});