2013-03-04 62 views
0

我创建了我的第一个jQuery插件,并希望创建jQuery对象,而是希望能够控制刚创建的对象......jQuery插件,返回

我建立一个新的对象我的插件以下格式在这里推荐:http://docs.jquery.com/Plugins/Authoring

这里是我的测试代码:

(function($){ 

    var $this = $(this); 

    var methods = { 
     init : function(options) { 

     // methods.createDiv(); 

      $this = $('<div>TEST CONTENT</div>') 
       .attr({ 'id':'test' }) 
       .css({'color':'white','backgroundColor': 'red'}) 
       .appendTo("body"); 

      setTimeout(function(){ 
        methods.green(); 
       }, 
       3000 
      ); 
      return $this; 
     }, 

     green : function() { 
      $this.css({'backgroundColor': 'green'}); 
     }, 
     blue : function() { 
      $this.css({'backgroundColor': 'blue'}); 
     } 
    }; 

    $.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.tooltip'); 
     } 
    }; 

})(jQuery); 


$(document).ready(function() { 
    var myTest = $.fn.myPlugin(); 
    myTest.blue(); 
}); 

最后,我希望能够控制使用MYTEST变量新创建的div,但它不工作。我确信有很多明显的作品我错过了,而且我正在犯的错误,但这就是我在这里发布的原因。这是我的第一个插件,所以如果有人能够帮助我获得这个测试代码并运行,我会很感激。目前,萤火报告: “类型错误:myTest.blue是不是一个函数”

+0

研究一些插件开发模式:http://addyosmani.com/resources/essentialjsdesignpatterns/book/#jquerypluginpatterns – 2013-03-05 00:01:20

回答

-1

调用你的方法为:

myTest.myPlugin("blue"); 

这里是一个演示:http://jsfiddle.net/5p2Ba/

blue没有了jQuery的方法对象在这里。您仅使用闭包将methods对象绑定到模块中。