【问题标题】:Is there a way to load a function from the htm that you're loading with .load()? JQuery有没有办法从你用.load()加载的htm加载一个函数? jQuery
【发布时间】:2014-05-11 22:15:56
【问题描述】:

在我的主窗口 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 访问它,它不会提醒“嗨”。有没有办法使用.load() 来加载页面和功能?或者当我选择加载页面的 div 时,有没有办法获得 onload 的功能?

【问题讨论】:

  • 你不能把脚本写在一个外部文件中,然后当你抓住search.html时把这个脚本插入你的页面吗?

标签: javascript jquery html parent onload


【解决方案1】:

onload / document ready 只会触发一次(在加载父文档时)

添加一个

<script type="text/javascript">
    test();
</script>

search.htm 的末尾(因此它在页面中的所有其他内容都被解析后执行)或在加载完成后从父页面调用test();(通过回调)...

$('#mainpanel').load("search.htm", function(){
    test();
});

这取决于您希望哪个页面负责执行该功能。在后一种情况下,父页面需要知道搜索中的函数名称,该名称可能适合您的设计,也可能不适合您的设计。

【讨论】:

  • OMG 连第一个想法都没有想到,我觉得自己很愚蠢。现在可以了。谢谢。
  • 完全不用担心。如果我们的任何一个答案有帮助,请考虑使用左侧的箭头/刻度进行投票和/或接受。一切顺利,希望将来能见到你。
【解决方案2】:

使用window.onload$( document ).ready() 没有意义,因为在您运行该函数时文档很可能已经加载。

您可以将回调传递给.load 并访问其中的函数。加载其他页面时执行回调:

$('#mainpanel').load("search.htm", function() {
    test();
});

当然test 必须在全局范围内才能正常工作。


与往常一样,建议阅读您正在使用的方法的文档https://api.jquery.com/load/

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2023-03-12
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多