在我的主窗口main.htm中,我有一个div按钮,在单击时将另一个htm文件加载到一个大div中。我用.load()来实现这个目的:
$('#mainpanel').load("search.htm");
“search.htm”中有一个名为test()
的函数,它只包含alert("hi");
,我希望在search.htm
加载到div时加载它。我使用了正文onload
标记和window.onload = test;
甚至$( document ).ready()
,但没有任何作用。它只有在我自己访问search.htm时才有效,但如果我通过main.htm
访问它,它就不会警告“hi”。有没有办法使用.load()
加载页面和函数?或者当我选择加载页面的div时,有没有办法让函数onload
?
答案 0 :(得分:0)
onload / document ready只会触发一次(加载父文档时)
添加
<script type="text/javascript">
test();
</script>
到search.htm
的末尾(所以在解析了页面中的其他所有内容之后执行)或者在加载完成后从父页面调用test();
(通过回调)...
$('#mainpanel').load("search.htm", function(){
test();
});
这取决于您希望负责执行该功能的页面。在后一种情况下,父页面需要知道搜索中的函数名称,这可能适合您的设计,也可能不适合您的设计。
答案 1 :(得分:0)
使用window.onload
或$( document ).ready()
没有意义,因为运行该功能时文档很可能已经加载。
您可以将回调传递给.load
并访问其中的函数。加载其他页面时执行回调:
$('#mainpanel').load("search.htm", function() {
test();
});
当然test
必须在全球范围内才能发挥作用。
与往常一样,阅读您正在使用的方法的文档是明智的:https://api.jquery.com/load/。