使用jquery / js查找元素的自动宽度

时间:2011-02-07 19:11:23

标签: jquery css width

在IE中,在Focus上我想要将元素的宽度扩展到width: auto,只有自动宽度比我设置的静态宽度宽。我试图避免的只是始终将元素设置为width: auto并使元素缩小。我只希望它在必要时扩展。

任何人都有一个干净的方法来检查设置为auto时的元素宽度,而不必首先设置属性?现在,我设置它,然后检查宽度并可能将其设置回静态,似乎应该有一个更清洁的解决方案。

使用jquery的当前代码示例:

$('mySelector').live('focus', function() {
      //store the original width, then set the element to width: auto
      $(this).data('w', $(this).width()).css('width', 'auto'));
      //is the element now shorter?  if so, set it back to the original width
      if ($(this).width() < $(this).data('w')) {
         $(this).width($(this).data('w'));
      }
   }

1 个答案:

答案 0 :(得分:1)

不确定您是否会找到更清洁的解决方案,但这里不涉及操纵元素本身:

function adjustWidth($el) {
    var $clone = $el.clone().css({width: "auto", display:"none"}).appendTo($el.parent());
    var width = $clone.width();
    $clone.remove();

    if (width > $el.width()) {
        $el.css("width", "auto");
    }
}