2011-04-12 101 views
1

如何从插件中检索API变量。按照Jquery的创作文档,这里是插件结构:带api的jquery插件

(function($){ 

    var methods = { 

     init : function(options) { 

      return this.each(function() { 
       var settings = { 
        'height' : 10, 
        'width' : 10 
       }; 

       if (options) { $.extend(settings, options); } 

       $('<div>', { 
        css : { 
         height : settings.height, 
         width : settings.width, 
        } 
       }).appendTo(this); 
      }); 

     } 

    }; 

    $.fn.myPlugin = function(method) { 

     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 on jQuery.element'); 
     }  

    }; 

})(jQuery); 

我想能够做到以下几点:

var element = $('div').myPlugin(); 
console.log(element.properties); 

在性能,我想有一个返回的高度的功能,我的Div的宽度。我将如何着手在这个设计中创建属性变量?

感谢

回答

0

你会摆脱...

return this.each(function() { ... }); 

...和你的插件回报的东西,如...

return { 
    'properties': { 
     'width': calculatedWidth, 
     'height': calculatedHeight 
    } 
} 

然而,这样做会意味着你不能链接另一种方法。

+0

谢谢,实际上我有更多的方法在我的插件中。这只是一个例子。理想情况下,我想只有创建元素的init方法,然后我会执行所有其他操作。 'var element = $('div')。myPlugin(); element.destroy(); element.getProperties();' – Sebastien 2011-04-12 10:36:36