在.click中使用$ .ajax(function(){?

时间:2012-12-13 03:38:04

标签: javascript jquery ajax onclick

这有效:

$(function(){

    $.ajax({
      url: 'http://files.main.bloggerstop.net/uploads/3/0/2/5/3025338/snowstorm.js',
      async: false,
      dataType: "script",
    });

});

然而,这不是:

$("a#trigger").click(function(){

    $.ajax({
      url: 'http://files.main.bloggerstop.net/uploads/3/0/2/5/3025338/snowstorm.js',
      async: false,
      dataType: "script",
    });

});

这是一个网站(不是我的)的季节性黑客,所以它不一定是完美的。只需要能够在点击时加载外部.js文件。

谢谢:)

2 个答案:

答案 0 :(得分:3)

您删除了“DOM ready”代码。把它放回来它应该再次工作。

$(function() {
    $("a#trigger").click(function(){

        $.ajax({
          url: 'http://files.main.bloggerstop.net/uploads/3/0/2/5/3025338/snowstorm.js',
          async: false,
          dataType: "script",
        });

    });
});

当您将脚本放在页面顶部时,它会立即运行,而不是等待页面的其余部分加载。

通过在DOM就绪处理程序中绑定处理程序,它将在文档加载之前运行。

此外,请确保您的选择器与您的目标元素正确匹配。

答案 1 :(得分:0)

我尝试了您的演示,问题在代码本身中进行了解释:

  

默认情况下在body onload()之后初始化(通过addEventHandler()   在底部调用。)要自定义属性,请在下面编辑或覆盖   此脚本运行后的配置(但在body.onload 之前),   例如。 snowStorm.snowStick = false;

您的问题是,在第二个场景中,您在页面加载完成后加载脚本,因此您的脚本永远不会被初始化。

[更新]我已经设置了一个现场演示。比较:

两者之间的唯一区别是左侧设置(DOM ready vs. onload