Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在渲染元素之前,如何使用jQuery找到元素的预期渲染宽度?_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 在渲染元素之前,如何使用jQuery找到元素的预期渲染宽度?

Javascript 在渲染元素之前,如何使用jQuery找到元素的预期渲染宽度?,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个元素,例如下面的元素,它尚未附加到正文。我可以很好地使用它,它有所有的类,这些类将导致它使用特定的盒子模型进行渲染 但我需要知道它的宽度,然后才能添加它 如果我使用Firebug检查元素,它会使用元素本身和CSS正确地计算长方体模型和布局。但是我如何从jQuery内部做到这一点呢 <li> <i class="icon"></i> <a>/a> </li> /a> css,例如用于i.icon设置宽度:40

我有一个元素,例如下面的元素,它尚未附加到
正文
。我可以很好地使用它,它有所有的类,这些类将导致它使用特定的盒子模型进行渲染

但我需要知道它的宽度,然后才能添加它

如果我使用Firebug检查元素,它会使用元素本身和CSS正确地计算长方体模型和布局。但是我如何从jQuery内部做到这一点呢

<li>
  <i class="icon"></i>
  <a>/a>
</li>
  • /a>
  • css,例如用于
    i.icon
    设置
    宽度:40,但我如何得到它


    elm.width()
    上的所有变量都为0,包括
    elm.css('width')
    如果不将其添加到文档中,则无法获取其计算属性。但是,您可以添加它,获取计算属性,然后删除它,几乎可以肯定用户不会注意到。例如:

    var $elm = /*...the jQuery wrapper around your element...*/;
    
    // Append it
    $elm.appendTo(document.body); // Put it where it should go, not usually `document.body` literally
    
    // Get the properties here, e.g.:
    var width = $elm.width();
    
    // Remove it again
    $elm.remove();
    

    |

    你不能,你必须附加它,但你可以隐藏它…如果你是说在将它添加到dom之前,那么我认为这是不可能的,因为与元素关联的样式只有在元素添加到dom之后才会应用…将它附加到dom但设置
    显示:none
    (或使用
    .hide()
    )然后你可以获得你需要的任何样式属性,然后删除它。”css,例如for
    i.icon
    设置
    width:40;
    “这是无效的css。40什么<代码>px
    <代码>em<代码>%?@Archer:
    display:none
    将给出元素大小0。人们可以使用
    visibility=“hidden”
    ——尽管这会造成“空白”。我希望如此。它似乎不起作用。即使将整个
    li
    添加到
    body
    中,也会为
    li
    提供宽度,但不会为子元素提供宽度。@deitch:适用于我:(来源:)。请注意,要提供
    i
    元素宽度,必须设置其
    display
    属性,因为其默认
    display
    属性为
    inline
    ,并且不能提供inline元素宽度。(您还需要宽度单位。)@deitch:并改用
    40%
    (而不是上面的
    40px
    ),只是数字有所不同:(来源:)谢谢,我会看看是否可以简化为在jsbin上重现。当然,一旦我这样做了,我可能会解决它@我想你是对的。它确实可以工作,但用于设置样式的CSS取决于它的位置。在这种情况下,
    div的特定类中的
    li
    中的
    i
    。如果我能做一个“CSS查询”,那就太好了。我会解决它,当我让它按照您的解决方案工作时,我会将它标记为正确。谢谢你发帖。