【问题标题】:jQuery ajax load() java script not executing?jQuery ajax load() javascript 没有执行?
【发布时间】:2009-08-22 21:25:24
【问题描述】:

我已经阅读了几篇关于这个问题的帖子,但我无法解决它。

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

谁能帮帮我?

会很棒!非常感谢:)

【问题讨论】:

标签: javascript jquery ajax load


【解决方案1】:

您想通过 AJAX 加载到页面上的 div 中,让我们调用它;

1) <div id="loadStuffHere"></div> of (abc.html)

2) 填充 loadStuffHere 的内容来自 xyz.html

所以就这样做吧;

$("loadStuffHere").load("xyz.html");

但是等等!!您不想从 xyz.html 加载所有内容,您只想加载 xyz.html 的一部分,例如 <div id="loadMeOnly"></div> of (xyz.html)

所以就这样做吧;

$("loadStuffHere").load("xyz.html #loadMeOnly");

但是等等!!假设<div id="loadMeOnly"></div> 的内部是一个手风琴,所以这意味着它必须被初始化,这意味着你还必须包含 javascripts...嗯,该怎么办...

你会考虑这样做;

$("loadStuffHere").load("xyz.html #loadMeOnly");
$.getScript('js/xyz.js');

上面的内容很糟糕,因为 a) 你需要创建一个外部 js 文件,b) 你实际上是在进行 2 个 http 调用,如果你通过正常的非 ajax 方式来做,你可以用 1 个 http 调用来做到这一点。

最好的解决方案是通过 1 次调用(HTML 和 js - 1 行,1 个 http)获得 2 件东西,这就是你的做法;

$("loadStuffHere").load("xyz.html #loadMeOnly, script");

这会加载#loadMeOnly div 和所有script 标签

这里的诀窍是逗号。你可以选择加载任何你想要的doms

【讨论】:

  • 除了 -- 既然你已经加载了那个脚本,你如何运行它?
【解决方案2】:

所以让我们首先确保你已经加载了 jQuery,确保库的链接在你的 HTML 的头部,所以是这样的:

<script src="/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>

使用firebug 检查“网络”选项卡以确保已加载。

还要确保您正在加载 您的 javascript:(这里我称之为“main”)

<script src="/javascripts/main.js" type="text/javascript"></script>

然后在你的 js 文件中执行如下操作:

$.(document).load( function () {
  alert("loaded!")
});

页面“完全加载”后应该会触发警报,我更喜欢使用ready(),它会在 DOM 加载后触发。

如果你已经完成了这一切,而你真正想做的是从你的 js 文件中加载并执行 js,试试这个:

.getScript()

这将加载并执行您想要的 JavaScript。

【讨论】:

  • 谢谢!我必须在哪里以及如何使用它?没有其他可能吗?
  • 好吧,我很难弄清楚你想要做什么,你确定你的页面上是否首先加载了 jQuery 吗?
  • 是的,我的页面到目前为止工作正常。由于 lod() 请求,jquery 必须工作。唯一的是加载内容中的js。我不知道如何解决... :(
  • 好的,谢谢 jpsilvashy,我会测试它,一分钟后回来:)
【解决方案3】:

此解决方案效果最佳。在加载特定的 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】:

    巨虎。我已经解决了。不知道这是不是最优雅的方式,但它有效:)

    jpsilvashy 你的 getscript();已经做到了:) 我已经在我的内容中包含了这两行应该加载的内容:

    <script type="text/javascript"> 
    $.getScript("js/tutorial-1.js");
    $.getScript("js/jquery.ahover.js");
    </script>
    

    行得通。

    对于遇到相同问题的每个人都有一个小提示。您应该删除 body 和 head 标签。如果包含它们,则不起作用。

    但是现在还有一个问题:为什么我需要在加载的内容中包含这个? 我认为必须在将内容加载到 dom 后加载 JavaScript。

    但这只是一些假设!

    感谢您的大力帮助!

    【讨论】:

    • 没人知道解释吗?
    【解决方案5】:

    脚本不能使用document.ready,文档已经准备好了。只需将脚本放在脚本标签之间即可。

    错误:

    <script type="text/javascript">
       $(document).ready(function() { 
           alert($('div').html());
       });
    </script>
    

    正确:

    <script type="text/javascript">
           alert($('div').html());
    </script>
    

    【讨论】:

      【解决方案6】:

      啊,我明白了...如果您只想加载一些 html 使用:

      $("selector for div ").load("/path_to_html.html div#main");
      

      div#main 是我想在您的远程文件中检索的div,但请记住,它必须是同一个域才能正常工作。

      【讨论】:

      • 那行得通,你看到的菜单就是加载的内容。这个菜单应该折叠在一起(js 做到了)。并且此脚本未加载。这就是问题:)
      • 只是为了弄清楚它应该是什么样子。打开johnlikesit.jo.ohost.de/helpme/htmlcontent.html我已经在第二个文件中包含了js文件来告诉你我的意思:)
      • 即使 js 文件包含在两者中(第一个文件和应该在第一个文件中加载的 html 文件,它也不起作用:(
      • 所以你不应该在正在加载的文件中需要任何 javascript,我们只是在修改 DOM,所以插入的内容仍然会受到你在原始文件下运行的 js 的影响文件,包括所有你的事件和一切。我不确定您最终想要完成什么,您是否可以尝试用不同的方式来解释它?
      • 好的,我会尝试 :) 应该插入的部分包含一个可以扩展的菜单。没有javascript,这是无法完成的(据我所知)。所以首先我将文件“htmlcontent.html”中的 html 内容加载到我的“index_helpme.html”中的 div“容器”中,这到目前为止有效。唯一的问题是与加载的 htmlcontent.html 交互。如果我想用 jquery 更改 css 样式或制作一些效果,它不起作用。我希望这个解释清楚明白:) 感谢您的帮助!
      【解决方案7】:

      您可以在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);
          });
      });
      

      【讨论】:

        【解决方案8】:

        您需要在无序列表上显式调用 ahover。请参阅documentaton

        【讨论】:

          猜你喜欢
          • 2013-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-25
          相关资源
          最近更新 更多