我正在尝试为jQuery构建我的第一个插件,并且我有以下代码。我想获取一个默认文本,我确实设置为$(this).text但它不能以这种方式工作。我曾尝试过父母和类似的东西,但没有幸运。
有什么想法吗?
感谢。
(function($) {
$.fn.functionName = function( options ) {
var options = $.extend({}, $.fn.functionName.prototype.defaults, options);
return this.each(function(){
// content
});
};
$.extend( $.fn.functionName.prototype , {
/** Default Settings **/
defaults: {
text: $(this).text(),
placeholder: false,
changedColor: "#999",
hoverColor: false
},
replacetags:function(text)
{
text = text.replace(/LLEFT/gi,"[");
text = text.replace(/RRIGHT/gi,"]");
return text;
}
});
答案 0 :(得分:0)
你做不到。将其设置为占位符值null
,并在插件函数中检查null
。
答案 1 :(得分:0)
如果您希望在插件外部设置默认值,则无法在默认值内的任何位置使用this
。我只是猜测,但你是否想要关注this plugin pattern?最大的区别是选项在// content
区域内扩展,您可以使用this
。
我有点偏颇,但我认为不是那种模式,请查看this article中的“命名空间和嵌套命名空间”示例。基本上,这个例子:
/*!
* jQuery namespaced 'Starter' plugin boilerplate
* Author: @dougneiner
* Further changes: @addyosmani
* Licensed under the MIT license
*/
;(function ( $ ) {
if (!$.myNamespace) {
$.myNamespace = {};
};
$.myNamespace.myPluginName = function ( el, myFunctionParam, options ) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object
base.$el.data( "myNamespace.myPluginName" , base );
base.init = function () {
base.myFunctionParam = myFunctionParam;
base.options = $.extend({},
$.myNamespace.myPluginName.defaultOptions, options);
// Put your initialization code here
};
// Sample Function, Uncomment to use
// base.functionName = function( paramaters ){
//
// };
// Run initializer
base.init();
};
$.myNamespace.myPluginName.defaultOptions = {
myDefaultValue: ""
};
$.fn.mynamespace_myPluginName = function
( myFunctionParam, options ) {
return this.each(function () {
(new $.myNamespace.myPluginName(this,
myFunctionParam, options));
});
};
})( jQuery );
中找到此示例和其他一些示例