我已经阅读了几篇有关此问题的帖子,但我无法解决。
我正在将一个html文件加载到div中。我加载的文件包含一个无序列表。 应该扩展此列表(包含子菜单项的菜单)并关闭。因此我需要js。 但不幸的是,这个脚本没有加载。
任何人都可以帮助我吗?
太棒了!非常感谢:)
答案 0 :(得分:12)
您想通过AJAX加载到页面上的div中,我们可以调用它;
1)<div id="loadStuffHere"></div>
(abc.html)
2)填充loadStuffHere
的内容来自xyz.html
所以就这样做;
$("loadStuffHere").load("xyz.html");
但等待!!您不希望从xyz.html加载所有内容,您只想加载xyz.html的一部分{y}来说明{x 1}}
所以就这样做;
<div id="loadMeOnly"></div>
但等待!!让我们说$("loadStuffHere").load("xyz.html #loadMeOnly");
里面是一个手风琴,这意味着它必须被初始化,这意味着你还必须包括javascripts ......嗯,该怎么做......
你会想到这样做;
<div id="loadMeOnly"></div>
以上很糟糕因为a)你需要创建一个外部js文件而b)你实际上正在进行2次http调用,如果你用普通的非ajax方式进行,你可以用1次http调用。
最好的解决方案是通过1次调用得到2件事(HTML和js - 1行,1个http),这就是你的做法;
$("loadStuffHere").load("xyz.html #loadMeOnly");
$.getScript('js/xyz.js');
这会加载$("loadStuffHere").load("xyz.html #loadMeOnly, script");
div和所有#loadMeOnly
标记
这里的诀窍是逗号。您可以选择加载您想要的任何doms
答案 1 :(得分:2)
因此,请确保首先加载jQuery,确保指向库的链接位于HTML的头部,如下所示:
<script src="/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>
通过选中“网络”标签,使用firebug确保其已加载。
还要确保你正在加载你的 javascript :(这里我称之为“主要”)
<script src="/javascripts/main.js" type="text/javascript"></script>
然后在你的js文件中执行以下操作:
$.(document).load( function () {
alert("loaded!")
});
一旦页面“完全加载”,它应该触发警报我更喜欢使用ready()
一旦加载DOM就会触发。
如果你有这个全部工作,你真正想要做的是从你的js文件加载并执行js试试这个:
.getScript()
这将加载并执行您想要的JavaScript。
答案 2 :(得分:2)
珠瑚。我已经解决了。不知道这是最优雅的方式,但它有效:)
jpsilvashy你的getscript();已经完成了:)我已经在我的内容中包含了这两行应该加载:
<script type="text/javascript">
$.getScript("js/tutorial-1.js");
$.getScript("js/jquery.ahover.js");
</script>
有效。
对于遇到同样问题的每个人,都有一个小提示。您应该删除正文和头部标记。如果包含它们则不起作用。
但现在还有一个问题:为什么我需要在加载的内容中包含这个? 我认为在将内容加载到dom之后必须加载JavaScript。
但这只是一些假设!
感谢您的大力帮助!
答案 3 :(得分:2)
此解决方案效果最佳。在加载特定div或内容容器后使用回调函数。
$('#CONTAINER').load('URL_TO_LOAD HTML_ELEMENT_TO_PLUCK_FROM_PAGE_AND_INSERT_INTO_CONTAINER', function () {
$.getScript('PATH_TO_SCRIPT_THAT_YOU_REQUIRE_FOR_LOADED_CONTENT');
});
答案 4 :(得分:2)
脚本无法使用document.ready,文件已经准备就绪。只需将脚本放在脚本标记之间。
错误:
<script type="text/javascript">
$(document).ready(function() {
alert($('div').html());
});
</script>
正确的:
<script type="text/javascript">
alert($('div').html());
</script>
答案 5 :(得分:0)
啊,我明白了...如果你只是想加载一些html使用:
$("selector for div ").load("/path_to_html.html div#main");
div#main
是我要在您的远程文件中检索的div
,但请记住它必须是同一个域才能使用。
答案 6 :(得分:0)
您可以在jQuery.getScript
的帮助下动态加载javascript文件并设置回调函数。当脚本加载后,调用回调函数。以下是从 cdnjs 加载 highlightjs 库的示例:
$.getScript("https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/highlight.min.js", function () {
$('pre code').each(function(i, block) {
// hljs now is available
hljs.highlightBlock(block);
});
});
答案 7 :(得分:-1)
您需要在无序列表上显式调用ahover。请参阅documentaton。