检测宽度:jQuery中的auto

我正在使用jQuery检索元素的宽度,如果我可以指示是否指定了明确的宽度(和高度),我会更喜欢它。

$(function() { alert($('#test').css('width')); });

这将根据客户端屏幕上占用的像素数来警告div的隐式宽度。 有没有办法,如果宽度丢失或设置为width: auto ,它可以使用jQueryvalidation?

也就是说,代替上面的示例返回一个整数,它将返回autoundefined 。 或者,是否存在等效的isAutofunction?

我不相信这一刻是可能的。 至少不在IE之外的任何其他浏览器中。 IE实现了element.currentStyle ,它表示在CSS文件中写入的样式。 另一方面,其余浏览器实现window.getComputedStyle ,它返回这些样式的计算值 。 这就是你在那里收到的,一个数值而不是auto。

解决它的唯一方法是解析document.styleSheets CSS声明。

参考文献:

这将在绝对值上获得字符串“auto”或“180px”。

 $('element').prop('style').width 

宽度或

 $('element').prop('style').height 

高度。

$('#test')[0].style.width=="auto"应该有效: http : //jsfiddle.net/KxTLE/和http://jsfiddle.net/KxTLE/1/试试

 jQuery.fn.isAuto=function() { if(this[0]) { var ele=$(this[0]); if(this[0].style.width=='auto' || ele.outerWidth()==ele.parent().width()) { return true; } else { return false; } } return undefined; }; 

例如: http : //jsfiddle.net/KxTLE/6/

据我所知,没有原生的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
'); 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'); 

这是演示插件function的小提琴 。

我不太确定我是否正确回答你的问题,但如果你使用width()函数,这将给你一个整数来表示渲染的宽度(以像素为单位)。

  1. 创造function
  2. 将css元素id传递给函数
  3. 写一个case对要在元素id的width属性上执行的语句

注意:要使用多个元素,最好使用带有元素名称数组的循环