2012-01-31 8 views
0

スクリプトが読み込まれるまでオブジェクトを非表示にする方法はありますか? ajaxcomplete()またはajaxSuccess()を使用しても機能しませんでした。サンプルスクリプトの下。jQuery生成時にjQuery生成アイテムが表示されます。

id:imagefocusというイメージがあります。私がajaxでイメージを変更するたびに、元のイメージサイズが分割されて表示されます。

$("#imageFocus").bind("load", function(){ 
    var width = $(this).width(); 
    var height = $(this).height(); 

    if(height > 443) { 
     var scaleRatio = height/443, 
      width  = Math.round(width/scaleRatio), 
      mLeft  = Math.round((590 - width)/2); 
     $(this).css({ 
      height:  "443px", 
      width:  width+"px" 
     }); 
     $(this).parent().css({ 
       marginTop: "0px", 
       marginLeft: mLeft+"px" 
     }); 
    } 
} 

答えて

3

は、CSSを介して画像を非表示にし、それがloadイベントだ上でそれを示しています。また、ajax呼び出しでイメージを非表示にする前に、イメージがロードされた後に以下のコードで表示されます。

のCss

#imageFocus{ 
    display:none; 
} 

JSロードが終了し、あなたの画像を自動的に挿入するために起こる

$("#imageFocus").bind("load", function(){ 
    var $this = $(this); 
    var width = $this.width(); 
    var height = $this.height(); 

    if(height > 443) { 
     var scaleRatio = height/443, 
      width  = Math.round(width/scaleRatio), 
      mLeft  = Math.round((590 - width)/2); 

     $this 
     .css({ 
      height:  "443px", 
      width:  width+"px" 
     }) 
     .show() //<---------Show the image 
     .parent() 
     .css({ 
       marginTop: "0px", 
       marginLeft: mLeft+"px" 
     }); 
    } 
} 
+0

ありがとうございました。シンプルでしかも効果的です。 :) –

0

はい、して起動します(あなたのロード機能で)

$("#imageFocus").hide() 

で終わる

$("#imageFocus").show() 
+0

私はこれを試して、うまくいきませんでした。 #imagefocusは画像ですが、ajaxで画像が変わるたびに、元の画像のサイズが分割されて表示されます。 –

+0

隠す前に:$( "#imageFocus")。attr( 'src'、 '') –

0

。あなたは実際のコールバックで望む動作を達成することはできません。代わりに、イメージを隠す関数を作成し、その後に新しい関数を読み込みます。その後、コールバックで再び可視にする

関連する問題