猿问

jQuery - 不可见时获取元素宽度(显示:无)

jQuery - 不可见时获取元素宽度(显示:无)

似乎在jQuery中,当元素不可见时,width()返回0.有道理,但我需要获取表的宽度,以便在显示父级之前设置父级的宽度。

如下所述,父母中有文本,使父母倾斜并且看起来很讨厌。我希望父级只有表格的宽度并且包含文本。

<div id="parent">
    Text here ... Can get very long and skew the parent    <table> ... </table>
    Text here too ... which is why I want to shrink the parent based on the table</div>

CSS:

#parent{
    display: none;}

使用Javascript:

var tableWidth = $('#parent').children('table').outerWidth();if (tableWidth > $('#parent').width()){
    $('#parent').width(tableWidth);}

tableWidth总是返回0,因为它不可见(我猜是因为它在可见时给了我一个数字)。有没有办法获得表格的宽度而不使父母可见?


明月笑刀无情
浏览 795回答 3
3回答

湖上湖

function&nbsp;realWidth(obj){ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;clone&nbsp;=&nbsp;obj.clone(); &nbsp;&nbsp;&nbsp;&nbsp;clone.css("visibility","hidden"); &nbsp;&nbsp;&nbsp;&nbsp;$('body').append(clone); &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;width&nbsp;=&nbsp;clone.outerWidth(); &nbsp;&nbsp;&nbsp;&nbsp;clone.remove(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;width;}realWidth($("#parent").find("table:first"));

阿晨1998

根据罗伯茨的回答,这是我的功能。如果元素或其父元素已经通过jQuery淡出,这对我有用,可以获得内部或外部维度,也可以返回偏移值。/ edit1:重写了这个函数。它现在变小了,可以直接在对象上调用/ edit2:该函数现在将在原始元素而不是正文之后插入克隆,从而使克隆可以维护继承的维度。$.fn.getRealDimensions&nbsp;=&nbsp;function&nbsp;(outer)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$this&nbsp;=&nbsp;$(this); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($this.length&nbsp;==&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$clone&nbsp;=&nbsp;$this.clone() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.show() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.css('visibility','hidden') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.insertAfter($this);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;result&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(outer)&nbsp;?&nbsp;$clone.outerWidth()&nbsp;:&nbsp;$clone.innerWidth(),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(outer)&nbsp;?&nbsp;$clone.outerHeight()&nbsp;:&nbsp;$clone.innerHeight(),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offsetTop:&nbsp;&nbsp;$clone.offset().top,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offsetLeft:&nbsp;$clone.offset().left&nbsp;&nbsp;&nbsp;&nbsp;}; &nbsp;&nbsp;&nbsp;&nbsp;$clone.remove(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result;}var&nbsp;dimensions&nbsp;=&nbsp;$('.hidden').getRealDimensions();
随时随地看视频慕课网APP

相关分类

JQuery
我要回答