Javascript 在内部使用$.ajax.click(函数(){?

Javascript 在内部使用$.ajax.click(函数(){?,javascript,jquery,ajax,onclick,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: 'htt

这项工作:

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

谢谢:)。

您删除了“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就绪处理程序中,在加载文档之前,它不会运行


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

我尝试了您的演示,代码中解释了这个问题:

默认情况下,在body onload()之后初始化(通过addEventHandler()进行) 要自定义属性,请在下面编辑或覆盖 此脚本运行后的配置(但在body.onload之前), 雪暴。雪杖=假

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

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

  • 在DOM就绪时:
  • 装载时:

两者之间的唯一区别是左侧设置(
DOM就绪与onload

使用require.js它怎么会不起作用?你会遇到什么样的错误?代码看起来不错。你为什么要以同步方式加载脚本?可能会显示html?第二个版本看起来不错,问题一定在其他地方。@Christian你真的应该指定
错误
,以防请求失败。在这种情况下,这根本不是问题所在,但这可能是您在使用AjaxThank时需要包含的内容。但是,document.ready的任何变体,无论是在head还是body中,都会返回相同的结果。单击时不会发生任何事情。:/@Christian:那么您的处理程序就没有绑定。请确保您没有在页面上重复使用相同的ID,然后重试从选择器中选择
a
。这是不必要的,因为id必须是唯一的。就像这家伙说的。没有$(function(){})/$(document).ready()/等,事件将在生成DOM元素之前绑定,因此将不绑定任何内容。还有任何id(#trigger)应该是唯一的,因此不需要指定它附加到(a)的元素的类型。如果特别不想使用initialize,可以使用$(document)。on('click','#trigger',function(){})它只是监视文档而不是一个特定的元素。@Christian:你的事件正在启动,你正在获取数据:你只是没有对它做任何事情。或者更确切地说……它没有运行。谢谢你的标记。原谅我的天真,但是一个“怎么办”呢有什么吗?真的需要把代码放在body标签的任何地方。