2009-11-13 97 views
1

我有一个页面,显示结果的详细信息的多个块。每一块里面我也附加了一些<a>标签与ThickBox的jQuery插件:class="thickbox"jQuery绑定在Ajax的load()事件

这是一种ampersant标签的一个例子:

<a class="thickbox" title="Please Sign In" href="userloginredir.php?height=220&width=350&deal=3"> 

问题是当我添加一个jQuery分页页面,因为在页面上显示的结果太多。 带有内部结果的div组件通过ajax load()事件进行更新。

下面是分页脚本:

$(document).ready(function(){ 
    //References 
    var pages = $("#menu_deals li"); 
    var loading = $("#loading_deals"); 
    var content = $("#content_deals"); 

    //show loading bar 
    function showLoading(){ 
     loading 
      .css({visibility:"visible"}) 
      .css({opacity:"1"}) 
      .css({display:"block"}) 
     ; 
    } 
    //hide loading bar 
    function hideLoading(){ 
     loading.fadeTo(1000, 0); 
    }; 


    //Manage click events 
    pages.live('click',function(){ 
     //show the loading bar 
     showLoading(); 

     //Highlight current page number 
     pages.css({'background-color' : ''}); 
     $(this).css({'background-color' : 'yellow'}); 

     //Load content 
     var pageNum = this.id; 
     var targetUrl = "ajax_search_results.php?page=" + pageNum + "&" + $("#dealsForm").serialize() + " #content_d"; 
     content.load(targetUrl, hideLoading); 
    }); 

    //default - 1st page 
    $("#1").css({'background-color' : 'yellow'}); 
    var targetUrl = "ajax_search_results.php?page=1&" + $("#dealsForm").serialize() + " #content_d"; 
    showLoading(); 
    content.load(targetUrl, hideLoading); 
}); 

当我添加分页(上面的代码),在ThickBox的事件不再被认可,而不是在它里面打开的结果坡平了登录表单的窗口新页面(就像点击正常链接一样) 从我的jQuery知识来看,这意味着组件没有在DOM中定义,因为内容在文档就绪触发后更新。

我试图加载事件与这样的绑定:

content.bind('load', ???); 

但我不知道如何通过负载参数,可以targetUrl这个和回调函数hideLoading,结合加载事件时。

请帮我解决这个问题,它已经花费了我更多的时间。

+0

你可以给你的网页的链接?这样我可以复制和排除故障。 – 2009-11-13 14:20:48

回答

0
tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox 

调用在ajax的回调中。

0

您已经使用hideLoading函数作为回调函数,而不是将其替换为您在此处初始化thickbox并隐藏加载的位置。

content.load(targetURL, function(){ tb_init('a.thickbox'); hideLoading(); });