私の知る限り、自動幅または高さを検出するネイティブの jQuery 関数はありません。だから私はそれを行うためのプラグインを書きました。
$.fn.isAuto = function(dimension){
if (dimension == 'width'){
var originalWidth = this.innerWidth();
var marginLeft = parseInt(this.css('margin-left'));
var testMarginWidth = marginLeft+50;
this.css('margin-left', testMarginWidth);
var newWidth = this.innerWidth();
this.css('margin-left', marginLeft);
if(newWidth<originalWidth){
return true;
}
else{
return false;
}
}
else if(dimension == 'height'){
var originalHeight = this.height();
this.append('<div id="test"></div>');
var testHeight = originalHeight+500;
$('#test').css({height: testHeight});
var newHeight = this.height();
$('#test').remove();
if(newHeight>originalHeight){
return true;
}
else{
return false;
}
}
};
元々、高さを行うために書いていたので、幅を含めるように拡張しました。次のように呼び出すだけです。
$('#element').isAuto('width');
また
$('#element').isAuto('height');
これは、プラグインの機能を示すフィドルです。