$.fn.dynamictab = function(settings){
 settings = jQuery.extend({
 navid : '#nav',
navtag : 'li',
  navclass : 'on',
ev : 'click',
 index : 0,
  callback : null
 }, settings || {});
 
 return this.each(function(){
 var container = this;
 var navList = $(settings.navid).find(settings.navtag),
 cur = settings.index,
 cls = settings.navclass,
 ev = settings.ev,
 callback = settings.callback;
 $(navList[cur]).addClass(cls);
 
 navList.each(function(i){
     $(this).bind(settings.ev, function(event){
 $(navList).removeClass(cls);
 $(this).addClass(cls);
 event.preventDefault();
 if(settings.callback){
     callback(this);
 }
 });
 
 });
 
 });
};
我就想问两句:
1.$.fn.dynamictab = function(settings){
2 settings = jQuery.extend({
 navid : '#nav',
navtag : 'li',
  navclass : 'on',
ev : 'click',
 index : 0,
  callback : null
 }, settings || {});
分别什么意思,最好能告诉我这么编写模式的含义jqueryfunction

解决方案 »

  1.   


    ==
    1、此乃构建jquery插件的写法,为2中构建jquery插件写法中的一种,为对象级别的插件开发,另一种为$.extend,具体请谷歌jquery插件开发2、jQuery.extend为合并多个对象,现实的例子如设置默认参数(setting),当没有传入默认参数时,使用默认设置项,当传入参数时,用传入的值替换默认值,jQuery.extend即是将默认对象集合与传入的对象集合合并,以传入对象的集合属性覆盖默认集合对象属性
      

  2.   

     settings = jQuery.extend({
     navid : '#nav',
    navtag : 'li',
      navclass : 'on',
    ev : 'click',
     index : 0,
      callback : null
     }, settings || {});最后的两个问题:
    1.在调用的时候settings.navid这个值为#nav,除非在调用dynamictab方法的时候加入了参数并重新给navid赋予了新的值。——不知道我的理解对不对?请指教?
    2.}, settings || {});这个是什么意思,我实在不能理解啊?
      

  3.   

    http://www.cnblogs.com/xcj26/p/3345556.html
    看看这个~~jquery插件的详解
      

  4.   


    1、理解尚可,总之没传入navid,就使用默认的#nav,传入则使用你赋予的新的值
    2、默认项与传入对象合并,其中“settings || {}”为作或运算符,当settings有参数传入时,那么settings || {}本质就等于settings自身,否则为空对象,那么通过jQuery.extend最终合并后,仍旧使用的是默认参数!