2016-09-28 7 views
0

私は周りを見回したと多くのソリューションを試みたが、jqueryのは、静止画像がロードされる前に、画像の高さを取得しようとしていますjQueryは画像が読み込まれる前に画像の高さを取得しますか?

$('img').load(function(){ 
    var heightStart = $(".carousel .carousel-inner img").height(); 
    alert(heightStart); // 0 
}); 

私はいつもを取得します。これを行う最善の方法は何ですか?

私もプレーンなJSで試してみました:

var i = new Image() 
    i.src = "images/xxx.jpg"; 
    var h = i.height 
    alert(heightStart); // 464 

それはイメージの高さを取得しますが、数が間違っています!数値は常に小さくなりますが、画像の高さは長くなります。

EDIT:

画像がない高さと幅の属性があります。

<div id="myCarousel" class="carousel slide" data-ride="carousel"> 

    <div class="carousel-inner"> 

    <div class="item active"> 

     <img class="first-slide" src="images/xxx.jpg" alt="First slide" class="img-responsive"> 
     <div class="container"> 
      <div class="carousel-caption">xxx</p> 
       </div> 
      </div> 
     </div> 
    </div> 

私のイメージの高さはそれほどnew Image()正しいある464です。問題は、画像が大画面でimg-responsiveでサイズ変更されていることです。

+0

私は狂っていますが、最初の部分は '$("。カルーセル。カルーセル - インナーimg ")です。 '$( 'img')'だけを実行すると、その特定の画像だけでなく、ページの最初の画像が読み込まれても関数が呼び出されます。もちろん、私はあなたのHTMLを見ることができません、多分それはページ上の唯一の画像です... – aaronofleonard

+0

人、上記の私の編集を参照してください。ありがとう。 – laukok

+0

あなたのタイトルが何を意味するのか、それはあなたの質問ですか?もしそうなら:http://stackoverflow.com/a/6575319/1414562 –

答えて

3
$('img').load(function(){ 
    alert($(this).height()); 
}); 

または

var i = new Image() 
i.src = "images/xxx.jpg"; 
i.onload = function() { alert(this.height) }; 

答えて行くには少し説明 - あなたの最初の関数は、.carousel .carousel-innerの高さの中に最初に一致したimg要素を警告するすべて存在img要素にonloadイベントリスナーを登録しますそれは0であるかもしれない、誰が知っている。

バニラの例の問題は、イメージの読み込みが完了する前に高さを警告しようとしていることです。

+0

ありがとう。私の上記の編集をご覧ください。 – laukok

+0

@teelou問題は何か分かりませんか? –

関連する問題