2009-07-14 58 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')