0

我正在尝试使用 jQuery 获取元素的宽度和高度。现在我有一个函数可以在元素周围包裹一个 span 并从临时 span 元素中获取大小。

HTML

<a id="test">click</a><br />
<div id="content" style="display:block">
    <div>Hello world</div>
</div>

<h3>Result:</h3>
<div id="result"></div>

JS

$( '#test' ).click ( function () {

    var size = elementSize ( '#content' );
    $( '#result' ).html ( size.width + ' x ' + size.height + ' px' );
} );

function elementSize ( elementId ) {

    var html_org = $( elementId ).html ();
    var html_calc = '<span>' + html_org + '</span>';
    $( elementId ).html( html_calc );

    var ret = {
        width: $( elementId ).find( 'span:first' ).width (),
        height: $( elementId ).find( 'span:first' ).height (),
    };

    $( elementId ).html( html_org );

    return ret;
}

一个(不)工作示例:http: //jsfiddle.net/KmeaC/1/

获得“Hello world”实际宽度和高度的唯一方法是删除它周围的 div 标签:http: //jsfiddle.net/ycxTr/。但这不是我想要的:)

任何人?

4

2 回答 2

0

编辑的答案

演示

$('#test').click(function () {

    var size = elementSize('#content');
    $('#result').html(size.width + ' x ' + size.height + 'px');
});

function elementSize(elementId) {

    var html_org = $(elementId).html();
    var $html_calc = $('<span>' + html_org + '</span>').css({
        position: 'absolute',
        top: -9999,
        left: -9999
    }).appendTo('body');



    var ret = {
        width: $html_calc.width(),
        height: $html_calc.height(),
    };
    $html_calc.remove();

    return ret;
}
于 2013-06-30T15:17:14.437 回答
0

当您复制隐藏元素时,它的大小为零。只需取消隐藏即可进行计算:

function elementSize ( elementId ) {
    ...
    $( elementId ).html( html_calc ).show();    
    var ret = {
        ...
    };    
    $( elementId ).html( html_calc ).hide();    
    ...    
    return ret;
}
于 2013-06-30T15:22:20.457 回答