大家好,我知道我的问题与其他问题相似,但我的问题不同。请仔细听我说。
简单地说,我只是想知道是否一次又一次地调用一个函数,如何在我的插件代码中设置一个条件,如果不调用该特定部分则不运行。
我在 jQuery 中编写了一个插件类型的短代码。这是特定于我的项目。它适用于我将传入参数的集合width
和height
特定元素。window load
和window resize
。_ 我是 jquery 的初学者,所以对对象不太熟悉。
这是代码
//creating some universal variable
var _W, _H, _header, _lH, _lW, _lH1, _lH2, _lH3;
(function($){
adjust = function(options) {
var defaults = {
headerClass: '',
containerClass : '',
Hlevel1:{space:0, divClass :'', prevDivClass : ''},
Hlevel2:{space:0, divClass :'', prevDivClass : ''},
Hlevel3:'',
Wlevel1 : {space:0, divClass : '', prevDivClass : ''},
Wlevel2 : {space:0, divClass : '', prevDivClass : ''}
};
var opts = $.extend(defaults, options);
function performAdjust(){
_W = $(window).width(); //retrieve current window width
_H = $(window).height(); //retrieve current window height
_headH = $(opts.headerClass).outerHeight(true);//retrieve current header height
// take left height after header height subtract to window height
_lH = _H - _headH
//make a variable for level one height
_lH1 = _lH - (opts.Hlevel1.space + $(opts.Hlevel1.prevDivClass).outerHeight(true))
//make a variable for level two height
_lH2 = _lH1 - (opts.Hlevel2.space + $(opts.Hlevel2.prevDivClass).outerHeight(true));
//applying height on main container
$(opts.containerClass).css({height:_lH});
//applying height on level 1 div
$(opts.Hlevel1.divClass).css({height:_lH1 });
//applying height on level 2 div
$(opts.Hlevel2.divClass).css({height:_lH2 });
//take left width after level one element
// if(typeof opts.Wlevel1.divClass === 'undefined'){
// console.log('insert in if');
// }
var prdiv_lw1 = $(opts.Wlevel1.prevDivClass).outerWidth(true);
_lW1 = _W - (prdiv_lw1+ opts.Wlevel1.space);
//applying Width on level 1 div
$(opts.Wlevel1.divClass).css({width:_lW1 });
//take left width after level one element
_lW2 = _lW1 - ($(opts.Wlevel2.prevDivClass).outerWidth(true)+ opts.Wlevel2.space);
//applying Width on level 2 div
$(opts.Wlevel2.divClass).css({width:_lW2 });
};
$(function() {
performAdjust();
});
$(window).resize(function() {
performAdjust();
});
}
})(jQuery);
如何初始化它
// initialize adjust function for manage route
$(document).ready(function (){
adjust({
headerClass : '.header',
containerClass :'.container, .navContainer',
Hlevel1: {space:0, divClass : '.viewport', prevDivClass : '#leftBreadcrumb'},
Wlevel1 :{space:0, divClass : '.contentContainer', prevDivClass : '.navContainer'},
Wlevel2 :{space:0, divClass : '.header-midsec', prevDivClass : '.navContainer'}
})
});
当页面通过ajax请求再次初始化
$(document).ready(function (){
adjust({
Hlevel1: {space:100, divClass : '.viewport1', prevDivClass : '.routeHead '},
})
});
问题
当我为其他元素再次初始化它时,它将覆盖所有属性。我第一次为主页结构初始化它。下次我的页面来自 ajax 请求,所以在该结构下,一些元素需要动态width, height
调整,我必须再次初始化它,但它会覆盖所有属性。
如果我再次调用此函数并且不传递未使用的对象和参数,那么我想提出一个条件,那么它将不会运行。
我怎样才能做到这一点,请告诉我
提前感谢,对不起我的英语
只是我只想知道是否一次又一次地调用一个函数,如何在我的插件中设置一个条件,如果我不调用该特定部分则不运行。
我尝试过的另一件事typeof
,但我不明白如何处理它。