JQuery .css()返回100%为100px

时间:2012-10-26 13:00:37

标签: javascript jquery html css

<style>
.info{
        width:94%;
      }
</style>

现在使用JQuery

这样做
$('.info').css('width');

返回 94px 而非pixles中的等效值(在我的情况下 500px 。)

如果我将css中的宽度设置为 105%,则JQuery会将其返回为 105px

父容器的高度和宽度分别为600px和500px。

5 个答案:

答案 0 :(得分:13)

我认为可能的原因是,在您尝试获取尺寸时,元素的容器会被隐藏。

我对嵌套的div和表有类似的情况。

请参阅以下小提琴,我设法重现行为:

http://jsfiddle.net/36yvb/

我仍然认为,当无法实际计算元素的维度时,jQuery会将百分比作为整数返回(没有%符号)。 更改#another-cell的宽度(以%表示),并在隐藏表时看到它返回相同的值而不带%符号。

答案 1 :(得分:0)

实际上,它似乎并非如此:see this fiddle

HTML:

<div id="info"></div>

的CSS:

html, body {
    position: relative;
    width: 500px;
}

#info {        
    width: 94%;
}

JS:

$( function() {
    document.write( $('#info').css('width') );
});

相对于信息宽度是多少?是宽度为100px的元素吗?

答案 2 :(得分:0)

它返回的宽度取决于它所写入的HTML的哪个部分。意思是说,如果它写在tag中,那么94%的百分比将反映该特定div的94%。

但是,如果同一标签中的另一个标签已经使用了一定数量的定义宽度,那么如果在信息标签之前定义的标签,信息甚至可能会获得更小的空间。

请放弃更多实际代码以获得更好的答案

答案 3 :(得分:0)

解释此行为的唯一方法是您有多个具有类info的元素

当发生这种情况并且您执行$('.info').css('width');时,jQuery将返回集合中第一个元素的width

如果是这种情况,您可能需要更具体地使用选择器。

DEMO

答案 4 :(得分:-1)

使用.css()

时,每个broswer将以文本方式返回不同但逻辑上相等的值,例如#FFF,#fffff和rgb(255,255,255)

而不是使用.css('width')使用.width()

根据jQuery:http://api.jquery.com/width/

  

.css(width)和.width()之间的区别在于后者   在前者返回无单位像素值(例如,400)   返回单位完整的值(例如,400px)。宽度()   当需要在a中使用元素的宽度时,建议使用方法   数学计算。