2013-07-05 4 views
11

.width()から返された値と、ノードの.style.width属性との差は、jQueryから.css('width')、jQueryからは.style.widthです。jQueryの.width()、style.width、jQuery .css( 'width')の違いは何ですか?

2つの表のセルの幅を等しく設定しようとすると、最初の2つのセルが同じ誤った答えを与えてしまったので、私は不思議です。実際に何が測定されているのですか?また、ブラウザで要素を表示するときに、.style属性に表示される値と同じではないのはなぜですか?

+0

うん、それは上記の削除する必要があるが、それはいくつかの奇妙な理由のために私をさせません – iConnor

+0

このjsfiddleチェック:http://jsfiddle.net/EjPBy/ –

+0

を[ジャストA.Wolffのコード@に変更幅を表示する](http://jsfiddle.net/EjPBy/1/)、 'sytle.width'にはまだ何も表示されていません。 – bonCodigo

答えて

6

の.css(幅)と.width(差

公式ドキュメントwidthから)後者は、(例えば、400)、無単位の画素値を返すことである前者戻る一方値単位はそのままです(例:400px)。 .width()メソッドは、要素の幅を数学的計算で使用する必要がある場合に推奨されます。

私はスタイルオブジェクトのプロパティを設定するために使用されて css()方法として .css('width').style.with差がないと思います。

.css('width')/.width().style.withの違いは、jQueryのメソッドはwindow.getComputedStyle(elem, null)を使用して計算されたスタイルを取得することです。このメソッドは、CSSとスタイルの適用後に実際のプロパティを読み込むために使用されます。

+0

私はそれらを使ってオブジェクトのプロパティを取得していますそれらが戻ってくる値の1ピクセル。 '.style.width'は正しいです、他は1pxの下にあります。 – ckersch

+0

@ckerschこの要素に適用されるCSSルールは何ですか?ちょうどあなたがテーブルセルについて話しているのを見て、この種の要素に何らかの特殊なスタイリングが適用されているかもしれません。同じ動作をしている場合は、他のブラウザで確認してください。スタイルシートの –

+0

: background-color:#FFF; 国境:1px solid #AAA; パディング:4px; パディング右:10ピクセル; パディング - 左:18px; vertical-align:top; display:table-cell; ---------- jQueryで設定します。 幅:124px; – ckersch

0

.width()

+0

.css( 'width')と.style.widthが異なる理由は何ですか?それが関連している場合、セルには境界線があります。最初は「123px」を返し、2番目は「124px」を返します。これは正しいです。 – ckersch

0

の.cssスタイル属性である何を与えるだろう(「幅」)appiedれるもの の.cssをお渡しします(「幅」)単位付加しながら、持つ属性を返します。 .width()はそうではありませんが、ピクセル単位で表示されます。

あなたは200pxのの.css(「幅」)の幅を持つ要素を持っている場合.widthながらそう(「200pxの」を返しますが)200

0

「意図幅」の違いもありますが返されます。実幅に対する。 .width()は要素の内容の幅を与え、.css( "width")はスタイルシートが意図する幅を与えます。ライブの違いを参照してください:クラウディオREDIの答え補完

2

http://jsfiddle.net/vovkss/kPXaB/

を私は.css('width')出力はピクセル(または他のユニット)に変換することができることを実証するために、意図的にcm単位を使用しましたが、 .width()は常にピクセル数を表す整数値です。

.style.widthは、インラインスタイルにのみ適用されます。

  • HTML:

    <div id="mydivInlineStyle" style="width: 10cm"><b>Inline style:</b> 
    </div> 
    
    <div id="mydivExternalStylesheet"><b>External stylesheet:</b> 
    </div> 
    
  • CSS:

    div { 
        width: 10cm; 
        border: 10px solid blue; padding: 11px; margin: 12px; 
        background: aqua; white-space: pre; 
    } 
    
  • JS:

    $('div').each(function(){ 
        $(this).append(
        'jQuery width(): ' + $(this).width() + "\n" + 
        '.css(\'width\'): ' + $(this).css('width') + "\n" + 
        '.style.width: ' + this.style.width 
    ); 
    }); 
    
  • 出力:

    Inline style: 
        jQuery width(): 378 
        .css('width'): 378px 
        .style.width: 10cm 
    
    External stylesheet: 
        jQuery width(): 378 
        .css('width'): 378px 
        .style.width: 
    
関連する問題