计算文本宽度而不会丢失DOM属性

时间:2016-06-09 09:55:12

标签: jquery

尝试使用jquery计算文本宽度时,无线电输入的“checked”属性将丢失。 我使用以下代码:

$.fn.textWidth = function(){
    var html_org = $(this).html();
    var html_calc = '<span>' + html_org + '</span>';
    $(this).html(html_calc);
    var width = $(this).find('span:first').width();
    $(this).html(html_org);
    return width;
};

我称之为:

$(".checkbox-inline-tooltip").each(function () {
     $(this).css({
         "position": "relative",
         "float": "left",
         "top": "-32px",
         "left": $(this).prev('label').textWidth() + 30 + "px"
     });
 })

'prev'标签有一个无线电输入。调用textWidth()后,“checked”属性将丢失,从而导致取消选中无线电。

1 个答案:

答案 0 :(得分:0)

尝试元素wrapInner()unwrap()。获取innerHTML,不会获得在输入​​元素中动态设置的checked, disabled等属性。

$.fn.textWidth = function(){
    $(this).wrapInner('<span>');
    var width = $(this).find('span:first').width();
    $(this).find('span:first').contents().unwrap();
    return width;
};