jQuery,“this”,来自父函数?

时间:2012-03-31 23:00:58

标签: jquery

我正在尝试为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;
  }

});

2 个答案:

答案 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 );

您可以在this github repository

中找到此示例和其他一些示例