我是用这样的方式创建jquery插件的   
(function($) {    
  
  $.fn.myName = function(options) {   
var defaults={
                       title:"title"
}
opts = $.extend(defaults, options);
  };
  
   function fname1(){
    //这是私有函数的写法,对吗?
    //我在这里怎么调用opts?直接opts是null
  };
  $.fn.myName.fname2=function(){
    //这是可供外部访问的函数的写法,对吗?
  }
   
  function fname3(){
    //我在此触发一个事件onSelectChange,但此事件的代码我并不写在此插件中,而是让外部调用者来写这个onSelectChange事件的具体代码,那么此插件中应该如何绑定?
  }    
      
})(jQuery); 麻烦给个思路,谢谢

解决方案 »

  1.   

    (function($) {    
      
      $.fn.myName = function(options) {   
            var defaults={
                           title:"title"        
            }
            opts = $.extend(defaults, options);
      };
      
       function fname1(){
        //这是私有函数的写法,对吗?
        //我在这里怎么调用opts?直接opts是null
      };
      $.fn.myName.fname2=function(){
        //这是可供外部访问的函数的写法,对吗?    外部可以通过 $("#xx").myName.fname2()来访问。
      }
       
      function fname3(){
        //我在此触发一个事件onSelectChange,但此事件的代码我并不写在此插件中,而是让外部调用者来写这个onSelectChange事件的具体代码,那么此插件中应该如何绑定?
      }
        /*
          $.fn.extend({
             fname3:function(){
                $(this).trigger("selectChange");  //触发
             }
          });
         
         外部调用: $("#slect").fname3(); 
         外部监控selectChangge :$("#select").selectChange(function(){
                                      // ....
                                      }) ;
        */
          
          
    })(jQuery); 
      

  2.   

       function fname1(){
        //这是私有函数的写法,对吗?
        //我在这里怎么调用opts?直接opts是null
    //逻辑不清造成的问题,opts变量在$.fn.myName函数中被赋值,但此时该函数还未执行,所以opts没有被赋值
      };
      $.fn.myName.fname2=function(){
        //这是可供外部访问的函数的写法,对吗?
    //基础知识,这个是给$.fn.myName对象添加了一个方法,作用域当然与$对象相同,如果$能在外部访问,其成员自然可以访问
      }
       
      function fname3(eventFunc){
        //我在此触发一个事件onSelectChange,但此事件的代码我并不写在此插件中,而是让外部调用者来写这个onSelectChange事件的具体代码,那么此插件中应该如何绑定?
    //可以传递一个函数参数来作为事件函数
      }