jQuery ajax load()javascript没有执行?

时间:2009-08-22 21:25:25

标签: javascript jquery ajax load

我已经阅读了几篇有关此问题的帖子,但我无法解决。

我正在将一个html文件加载到div中。我加载的文件包含一个无序列表。 应该扩展此列表(包含子菜单项的菜单)并关闭。因此我需要js。 但不幸的是,这个脚本没有加载。

任何人都可以帮助我吗?

太棒了!非常感谢:)

8 个答案:

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