2013-11-25 41 views
1

我有一个页面(/ mysite的/第1页)负载元件,之后页面完全加载

本页面使用加载其他页面到自身的jQuery:

HTML:

<div id="header_container"></div> 
<div id="table_container"></div> 

Javascript:

$(document).ready(
    function(){ 
     $("#header_container").load("/mysite/header") 
     $("#table_container").load("/mysite/table") 
     } 
    ) 

现在,我想要第二个页面(/ mysite/page2)只使用内容第1页上的#table_container。

在第2页,当我尝试:

<div id="other_table_container"></div> 

和:

$("#other_table_container").load("/mysite/page1 #table_container") 

结果是空的,我想是因为第1页说:“我装”的#table_container装有前/ mysite的/表。

如何确保页面1上的所有jQuery请求在加载到page2之前都已加载?

回答

1

我能想到解决这个问题的唯一方法是在子iFrame中使用父回调。

考虑具有第1页,一个隐藏的iframe页2.

<iframe src="/mysite/page1" style="display:none"></iframe> 

上。在第2页的源

function loadPage1() 
{ 
    $("#other_table_container").html($("iframe").contents()); 
} 

然后在页面1

$(document).ready(
    function(){ 
     $("#header_container").load("/mysite/header", function(){ 
      $("#table_container").load("/mysite/table", function(){ 
       parent.loadPage1(); 
      )); 
     }); 
    } 
)); 
的源

如果您想从页面1获得特定的ID,如#table_container,则可以简单地更改方法loadPage1()接受一个变量,loadPage1(html)

function loadPage1(html) 
{ 
    $("#other_table_container").html(html); 
} 

,然后在第1页来源:

$(document).ready(
    function(){ 
     $("#header_container").load("/mysite/header", function(){ 
      $("#table_container").load("/mysite/table", function(){ 
       parent.loadPage1($("#table_container").html()); 
      )); 
     }); 
    } 
)); 
+0

感谢您的回复,兄弟。会给这个镜头。 – kbuilds

+0

这看起来很不错。我需要采取哪些额外步骤将数据发布到iframe的src? – kbuilds

+0

您可以使用一个很好的ol'fashioned $ .post语句并将回调HTML发送到iframe的.html()(或者对于iframe可能是.load();不确定关闭我的头顶部)。 – David

1

你可以尝试这样的:

$(document).ready(function() { 
    $("#header_container").load("/mysite/header"); 
    $("#table_container").load("/mysite/table", function() { 
     // #other_table_container shouldn't be loaded until #table_container is loaded 
     $("#other_table_container").load("/mysite/page1 #table_container") 
    }); 
}); 

http://api.jquery.com/load/下的回调函数部分。

+0

在哪个页面的JS应该放置? – kbuilds

+0

将其他页面加载到其div中的页面。 – niiru

+0

+1如果page1包含此代码,则类似于此的某些内容将起作用。但是,这需要子页面(page1)知道父页面(page2)。虽然在这个简单的应用程序中这可以很好地工作,但这种做法不容易扩展。谢谢回复。 – kbuilds

相关问题