有没有办法从你正在加载的htm加载函数.load()? JQuery的

时间:2014-05-11 22:15:57

标签: javascript jquery html parent onload

在我的主窗口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

2 个答案:

答案 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/