jquery中的.load()问题

时间:2011-07-06 16:17:23

标签: jquery

好的,我会把我的代码:

$("#html_contenido").load("../../jsp/comun/contenedor_operativa.html" ,function(){
    $("#html_publicidad_reservar").load("../../html/pub/publicidad_reserva/publicidad_reservar_fr.html", function(){
        alert($("#html_publicidad_reservar").html());
    });
});

alert($("#html_publicidad_reservar").html());

第一个提醒会显示publicidad_reservar_fr.html()内部的内容,但第二个提醒未显示,因此在网页中#html_publicidad_reservar

内没有显示任何内容

有谁能告诉我这段代码有什么问题?

3 个答案:

答案 0 :(得分:3)

A 同步 JAX 仍在运行时执行第二个警报。所以元素仍然是空的。如果您需要在加载代码后运行代码,请在第一个警报所在的内部回调中执行。

答案 1 :(得分:1)

第二个alert在第一个load之前运行因为Ajax函数调用{{1}}然后运行其回调函数,所以方案是

  1. 加载功能
  2. 第二次提醒
  3. 完成加载
  4. 运行回叫
  5. 您可以查看this

答案 2 :(得分:1)

.load使用ajax,默认情况下是异步的,因此第一个alert在html加载后显示它,而第二个警报在第一个警报之前运行,那时没有任何内容{{ 1}}但是。

时间表是这样的:

  1. Javascript会读取.load并执行它。
  2. 第二个.load触发,因为来自#1的alert仍在发生
  3. .load已加载。
  4. 由于#3发生且已加载,因此下一个contenedor_operativa.html发生
  5. 嵌套.load发生后,源代码中的第一个警报发生
  6. 这意味着,您应该将代码放在源代码中第一个.load的位置,否则您将在未加载的元素上运行。

    你可以做alert但是这会杀死使用XHR /“Ajax”的全部目的