jQuery插件教程混乱

我不得不遗漏一些东西. jQuery插件教程在“Namespacing”中找到了 here – > “插件方法”部分,有潜伏在下面的插件声明.我没有得到的是方法变量的范围;我的意思是,不应该将方法定义为工具提示中的var吗?一旦这个匿名函数执行,如果我理解正确,方法就会超出范围,因为它被定义为函数中的var.当工具提示调用时,工具提示如何引用将超出范围的var方法?我错过了什么?

(function( $){

  var methods = {
    init : function( options ) { // THIS },show : function( ) { // IS   },hide : function( ) { // GOOD },update : function( content ) { // !!! }
  };

  $.fn.tooltip = function( method ) {

    // Method calling logic
    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.tooltip' );
    }    

  };

})( jQuery );

解决方法

分配给$.fn.tooltip的函数closure [Wikipedia],因此可以访问所有更高的作用域.

当外部函数返回时,方法不会被销毁,因为闭包仍然引用它.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...