2011-11-09 8 views
0

、私は幅によってアイテムを中央しようとしています:

var name_ = 'Random name'; 
$('.arrow .text').text(name_);    
$('.arrow .text').css({'marginLeft':'-'+$('.arrow .text').width()/2+'px'}); 
console.log($('.arrow .text').length +' '+ $('.arrow .text').width()); 

HTML

<div style="float:left;"> 
     <div class="map"> 
      <div class="arrow"> 
       <img src="http://www.discoverdartmouth.com/images/map.point.png" /> 
       <div class="text"></div> 
      </div> 
      <img src="http://www.freepik.es/foto-gratis/mapa-del-mundo_17-903095345.jpg" id="img1" /> 
      <br/> 
      <br/> 
      <span class="spain mPointer">Spain</span> <span class="australia mPointer">Australia</span> 
     </div>      
    </div> 

は、回線設定マージンが動作していないと、コンソールログが"1 0"を出力しているので、項目が存在します幅はありません。

私はここで何が欠けていますか?

+1

HTMLを投稿してください。これは、JS/jQueryではなく、HTML/CSSを使用して達成されるべきもののように聞こえます。 –

+1

jQueryを使用してHTML要素を配置しないでください。これがCSSの目的です。 – Blender

+0

'px'を追加する必要はありません。 – SLaks

答えて

4

いいえ;空の要素の幅は0です。

DOMツリーにない要素の幅も0です。

+0

しかし、この項目は空ではなく、それはDOMツリー内にあります...なぜwidthは0を返すのですか? –

関連する問題