Jquery如何执行附加ajax的命令

时间:2014-03-15 21:31:41

标签: javascript jquery html ajax

当我点击菜单中的一个项目时,我将文档的内容加载到div中。该外部文档包含jQuery命令。但是没有运行。

    $(document).ready(function() {    
    $("ul.subnav li a").click(function() {
            link = $(this).attr("href");
            $.ajax(link).done(function(data) {
                $("#div-page").html(data);
            });

            return false;
        });
});

在将要加载的文档中,有更多这样的jQuery命令:

 $(document).ready(function() {

        // get lista de estados
        $.ajax("../php/get_lista_estados.php").done(function(data) {
            $("#estados").append(data);
        });

        $("#estados").change(function() {
            id = $(this).val();
            // get lista de estados
            $.ajax("../php/get_lista_municipios.php?id=" + id).done(function(data) {
                $("#municipios").html(data);
            });
        });

    });

但是当我将此文档加载到div中时,命令不会运行。我说得清楚吗?

3 个答案:

答案 0 :(得分:1)

您可以使用$.getScript加载并运行它。阅读jQuery文档以获取更多信息

示例:

$.getScript("test.js", function(){
    alert("Running test.js");
});

答案 1 :(得分:1)

使用jQuery.getScript()或:

$(document).ready(function() {

  $("ul.subnav li a").click(function(e) {
    e.preventDefault();
    link = $(this).attr("href");
    $.ajax({
      url: link,
      dataType: "script"
    }).done(function(data){
      // No need to append data as the script has already been loaded and run.
      // $("#div-page").html(data);
      // Do any other stuff here..
    });
  });

});

答案 2 :(得分:1)

当谈到jQuery和Ajax的结合时 - 了解在脚本加载时如何在DOM上实现JavaScript非常重要。

您看到使用$.getScript()或添加<script src="your.js"></script>的答案的原因是,一旦加载了DOM,那就是它。如果你想要添加函数,只要它来自外部脚本通过ajax,就像你想要做的那样。您正在尝试将新功能加载到“已加载”的DOM中 - 而不是它的工作方式。

如果您希望任何函数响应ajax注入,那么您需要让脚本成为运行DOM时预加载的脚本。那么,这就是$.getScript()进入图片的方式。

通常,通过您想要的那种注入,您将需要使用$.getScript()来获取您的javascript函数/定义,同时使用您的ajax来获取/发布包含HTML结构的脚本。您将能够在此方法中执行此奇特注入并使用jQuery进行播放。