2011-02-07 9 views
1

IEでは、要素の幅をwidth: autoに拡張したい場合は、自動幅が広い場合は固定幅に設定します。私が避けようとしているのは、常に要素をwidth: autoに設定し、要素を縮小することだけです。私はそれが必要なところで拡大したいだけです。jquery/jsで要素の自動幅を探す

属性を最初に設定しなくても、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

わからないが、ここでは要素自体を操作伴わないものがあります:

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"); 
    } 
} 
+0

おかげアンドリュー - 私は標準のプロパティやメソッドが欠けていたと思っていましたが、複製された要素を元のものと編集して幅をつかむという考えが好きです。 – kmfk

+0

'display:none'要素は幅を持っていますか? –

関連する問題