2009-07-14 87 views
0

我有一個jQuery選項卡布局內的iframe。我正在使用iframe上傳圖片,以模擬AJAX文件上傳。看起來每當我的iframe回發時,它都會導致父頁面的$(document).ready執行,重置我所在的當前選項卡。防止從父母調用jQuery「就緒」函數的iframe回發

有關如何防止這種情況的任何想法?

function uploadDone() { 

    var data = eval("("+ $('#upload_target').contents().find('body').html() +")"); 
    if(data.success) { 
     $('#upload_summary').append("<img src='" + data.full_path + "' />"); 
     $('#upload_summary').append("<br />Size: " + data.file_size + " KB"); 
    } 
    else if(data.failure) { //Upload failed - show user the reason. 
     alert("Upload Failed: " + data.failure); 
    } 
} 

$(document).ready(function() { 

    $('#image_uploader').submit(function() { 

     if($.browser.safari || $.browser.opera) { 

      $('#upload_target').load(function(){ 
       setTimeout(uploadDone, 0); 
      }); 

      var iframe = document.getElementById('upload_target'); 
      var iSource = iframe.src; 
      iframe.src = ''; 
      iframe.src = iSource; 

     } else { 

      $('#upload_target').load(uploadDone); 
     } 
    }); 

}); 
+0

你能發佈你的代碼嗎?當你在iFrame上提交表單並在你的父頁面的document.ready中檢查該標誌時,你不能嘗試設置一個標誌嗎? – SolutionYogi 2009-07-14 03:15:20

回答

1

的標誌是有道理的(如什麼SolutionYogi提到)。如果在父框架中的document.ready只需要執行一次,則將全局標誌設置爲一個值,您可以檢查它何時再次被觸發。

另一種方法是在執行它之後解除綁定document.ready。 例如$(document).unbind('ready')