$.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
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、此乃构建jquery插件的写法,为2中构建jquery插件写法中的一种,为对象级别的插件开发,另一种为$.extend,具体请谷歌jquery插件开发2、jQuery.extend为合并多个对象,现实的例子如设置默认参数(setting),当没有传入默认参数时,使用默认设置项,当传入参数时,用传入的值替换默认值,jQuery.extend即是将默认对象集合与传入的对象集合合并,以传入对象的集合属性覆盖默认集合对象属性
navid : '#nav',
navtag : 'li',
navclass : 'on',
ev : 'click',
index : 0,
callback : null
}, settings || {});最后的两个问题:
1.在调用的时候settings.navid这个值为#nav,除非在调用dynamictab方法的时候加入了参数并重新给navid赋予了新的值。——不知道我的理解对不对?请指教?
2.}, settings || {});这个是什么意思,我实在不能理解啊?
看看这个~~jquery插件的详解
1、理解尚可,总之没传入navid,就使用默认的#nav,传入则使用你赋予的新的值
2、默认项与传入对象合并,其中“settings || {}”为作或运算符,当settings有参数传入时,那么settings || {}本质就等于settings自身,否则为空对象,那么通过jQuery.extend最终合并后,仍旧使用的是默认参数!