2009-11-13 131 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(); });