2013-12-10 63 views
1

我有根據屏幕大小調整圖像大小的腳本。將圖像的新內容加載到div後重新運行腳本

腳本的圖片:

$(document).ready(function($){ 

     var ratios, 
    adjustSize = function(){ 

    var total = 520, 
     win = $(window), 
     winW = win.width(), 
     winH = win.height()-150; 

    $('#container img').each(function(i){ 
     var w = winH * ratios[i]; 
     $(this).css({ 
      height: winH, 
      width : w 
     }); 
    total += w; 
    }); 
    $('body').width(total); 
}; 

    $(window).load(function(){ 
     ratios = $('#container img').map(function(){ 
      return $(this).width()/$(this).height(); 
     }); 
     adjustSize(); 
    }) 
    .resize(function(){ adjustSize(); }); 
}); 

一切正常,只是當我嘗試加載新的內容進入格從外部文件很大,這個腳本調整大小不會再重新運行,並調整圖片大小。

腳本變革的內容:

$(document).ready(function(){ 
      $("#id").click(function(){ 
      $('#container').load('some.html').hide().fadeIn('slow'); 
      }); 
     }); 

我如何更改腳本? 我嘗試了一個事件.click(),但它不起作用,或者我做錯了什麼。 我真的被卡住了,請任何人幫忙!

謝謝

回答

1

您正試圖在其上下文之外訪問「adjustResize()」函數。

嘗試添加以下內容到文件

var adjustSize; 

,然後添加的極頂「;」而不是「」中‘比’,因此它看起來就像這樣:

var ratios; 
adjustSize = function(){ 
0

您可以使用一個回調load調用一個函數它完成時:

$(document).ready(function(){ 
     // Click event is needed assuming that you want the load to happen only when the element with id 'id' is clicked 
     $("#id").on('click', function(){ 
      $('#container').load('some.html', function() { 
       // Do something after load (wrap your image resizing code in a function and call it here) 
      }) 
      .hide().fadeIn('slow'); 
     }); 
    }); 
+0

我已經在腳本中添加了這些行,它幾乎是完美的。我做了一個測試頁面。 [測試頁](http://natasamedvesek.com/test/) 您可以請看看它。該腳本不會立即更改內容的寬度,但會在點擊時進行第二次。而且當我點擊鏈接時,新內容不會從開始滾動,而是在前一個內容結束的位置。 – user1879882

2

呼叫adjustSize() (在隱藏它之前)功能

$('#container').load('some.html',function(){ 
    adjustSize(); 
    $(this).hide().fadeIn('slow'); 
}); 
+0

謝謝,但它不起作用 – user1879882

+0

我做了一個測試頁,在第二個答案的幫助下,如果你想看看。我仍然無法正常工作,但我更加接近。 [測試頁面](http://natasamedvesek.com/test/) – user1879882

+0

@ user1879882如果您需要幫助,請將您的代碼放在jsfiddle中... –