检测宽度:jQuery中的auto
我正在使用jQuery检索元素的宽度,如果我可以指示是否指定了明确的宽度(和高度),我会更喜欢它。
$(function() { alert($('#test').css('width')); });
这将根据客户端屏幕上占用的像素数来警告div的隐式宽度。 有没有办法,如果宽度丢失或设置为width: auto
,它可以使用jQueryvalidation?
也就是说,代替上面的示例返回一个整数,它将返回auto
或undefined
。 或者,是否存在等效的isAuto
function?
我不相信这一刻是可能的。 至少不在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
最初,我把它写成高度,所以我只是把它扩展到包括宽度。 你这样称呼它:
$('#element').isAuto('width');
要么
$('#element').isAuto('height');
这是演示插件function的小提琴 。
我不太确定我是否正确回答你的问题,但如果你使用width()函数,这将给你一个整数来表示渲染的宽度(以像素为单位)。
- 创造function
- 将css元素id传递给函数
- 写一个case对要在元素id的width属性上执行的语句
注意:要使用多个元素,最好使用带有元素名称数组的循环