2012-02-21 57 views
0

当用户点击网页中的标签时,该标签打开并从服务器下载相应的页面。当网页下载完成时回调

我想通过Java脚本或jquery在此页面中添加一些UI。我知道我怎么可以添加这个,但问题是如果我执行我的Java脚本函数添加用户界面点击该选项卡,它不起作用,因为相应的页面尚未下载。

基本上,我想知道当页面完全下载时调用这样的函数。

+0

能否详细说明“从服务器上下载相应的页面”?你在做什么?使用'$ .ajax()'? – Sinetheta 2012-02-21 05:42:34

+0

是的,页面使用ajax异步下载 – Vikas 2012-02-21 05:46:11

+0

这还没有告诉我们很多,如果你使用jQuery的'.ajax()',那么你必须做一些事情来获取页面中的内容。你真的必须在这里提供一些关于你在做什么的信息(例如:代码)。 – Sinetheta 2012-02-21 05:47:48

回答

0

在你的页面的正文中添加这个..

<body onload="init()"> 

</body> 

基本上你打电话给你init function - 其启动所有你想要的网页的正文只加载后其他功能..

+0

下载的一些div元素,实际上,新的html页面不会下载,只有一组div标签下载异步 – Vikas 2012-02-21 05:48:23

+0

真的很难猜到这些东西,当你给我们没有信息。提供一个链接,一个jsfiddle或源代码 – Sinetheta 2012-02-21 05:49:08

+0

@vikas提供你的代码..很难猜到你在做什么..如果你通过ajax来做 - 有一些叫做“onreadystatechange”事件 - 它改变了'readyState' - 所以,一旦准备好的状态是'4'或'100',你就可以在那里添加你的js ..也就是说,'if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {0128]你想在这里用xmlhttp.responseText; }' – 2012-02-21 05:53:30

1

你用过JQuery成功吗?成功处理程序只有在您的响应准备就绪后才会被调用。 试试这个:

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    //Do the stuff here, hence downloading has been completed and response from server is ready 
    $(this).addUI("done"); 
    } 
}); 
0

我必须面对这个问题太..这里问题是你的内容尚未公布之前,你可以在它的工作。
你给将导致返回 该解决方案的任何引用可以.bind()& .live()

想这是你的动态内容

$('body').append('<div class="clickme">Another element</div>'); 


您可以通过元素绑定,

$('.clickme').bind('click', function() { 
// Bound handler called. 
}); 

或注册它的直播内容,通过

$('.clickme').live('click', function() { 
// Live handler called. 
}); 

不再需要时,您可以通过.die()
你可能还会发现.delegate() & 退订动态内容的情况下undelegate()很有用,因为与.live()& .die()几乎没有问题。
检查http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/选择您需要的应​​用程序。
请记住,不要忘记你确保内容是由ajax成功载入的,因为程序员_1在这里提到。
祝你好运:)
任何进一步的澄清请评论。