我正在写一个函数,该函数计算最大的高度/宽度,并使元素的高度/宽度相同。我想将2个参数传递给此函数:
1. The selector, which can be(element, class )
2. jQuery `width()` / `height()` function
并且期望的结果应该是看起来像这样的函数。
Eg 1. equalDimensions('.class', width() ); OR
Eg 2. equalDimensions( div, height() );
并根据传递给函数的内容width()
/height()
将计算出最大的高度/宽度,并使作为第一个参数传递的所有选择器的宽度/高度相等。
作为jQuery的新手,我正在努力将其放入代码中。
到目前为止,这是我尝试过的...
var equalDimension = function( selector, fn ){
var dimension = fn();
var biggestDimemsion = 0;
$(selector).each(function(){
if($(this).dimension > biggestDimemsion){
biggestDimemsion = $(this).dimension;
}
});
$(selector).each(function(){
$(this).dimension(biggestDimemsion);
});
};
我写了一个简短的示例说明如何解决此问题:
var equalDimension = function (selector, fn) {
var $elements = $(selector),
dimensions = $elements.map(function (i) {
return $elements.eq(i)[fn]();
}),
maxDimension = Math.max.apply(Math, dimensions);
$elements[fn](maxDimension);
};
equalDimension('div', 'height');
假设您传递的是jQuery函数的名称,而不是函数本身。如果要传递实际函数,则如下所示:
var equalDimension = function (selector, fn) {
var $elements = $(selector),
dimensions = $elements.map(function (i) {
return fn.call($elements.eq(i));
}),
maxDimension = Math.max.apply(Math, dimensions);
fn.call($elements, maxDimension);
};
equalDimension('div', $.fn.height);
编辑:在为此创建一个干净的UI方面,我最有可能在下面的JSBin中添加它。
http://jsbin.com/pogujozane/edit?js,输出
$.fn.equalDimension = function (fn) {
var $elements = $(this),
dimensions = $elements.map(function (i) {
return $elements.eq(i)[fn]();
}),
maxDimension = Math.max.apply(Math, dimensions);
$elements[fn](maxDimension);
};
$.fn.equalHeight = function () {
return $(this).equalDimension('height');
};
$.fn.equalWidth = function () {
return $(this).equalDimension('width');
}
这样就可以这样称呼它:
$('div').equalHeight();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句