日期:2014-05-16  浏览次数:20338 次

jquery插件开发的全局变量,公共函数及事件问题
我是用这样的方式创建jquery插件的
JScript code

   
(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); 




麻烦给个思路,谢谢

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