如何使用jQuery从iframe调用父页面上的函数?
我有一个上传表单,发布到隐藏的iframe。 我试图从iframe调用父页面上的函数,但我收到错误“top.stopUpload不是函数”。
这样做的正确方法是什么?
父母页面:
$(document).ready(function() { $('#document_upload').submit( function() { $('#upload_progress').show(); }); function stopUpload(success){ if (success == 1){ $('#result', window.parent.document).html( 'The file was uploaded successfully!'); } else { $('#result', window.parent.document).html( 'There was an error during file upload!'); } $('#upload_progress').hide(); return true; } })
IFRAME:
$(document).ready(function() { top.stopUpload(); }
你的stopUpload()
函数的作用域是传递给$(document).ready()
的匿名函数。
您需要确保其范围对iframe
可见。 一种方法是将函数分配给window
,即浏览器中的全局对象。
另一种方法是在匿名函数之外的全局代码中创建函数。
试试这个:
var myGlobalObject = {}; myGlobalObject.stopUpload = function(success){ if (success == 1){ /*...*/} //... }; $(document).ready(function() { //... });
来自你的iframe:
$(document).ready(function() { parent.myGlobalObject.stopUpload(); });