2

这有效:

$(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 文件。

谢谢 :)。

4

2 回答 2

3

您删除了“DOM 就绪”代码。把它放回去,它应该会再次工作。

$(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 就绪处理程序中,它在文档加载之前不会运行。

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

于 2012-12-13T03:40:42.190 回答
0

我试过你的演示,代码本身解释了这个问题:

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

您的问题是,在第二种情况下,您在页面完成加载后加载脚本,因此您的脚本永远不会被初始化。

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

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

于 2012-12-13T05:41:39.223 回答