2016-08-18 57 views
0

我已經找到了自己的答案,但是因爲我發佈,我沒有太多的運氣。 Fancybox發現在:http://fancyapps.com/fancybox/Fancybox2加載後更新標題

我正在爲我自己做一個照片庫,這是非常好的。但是,我想要將圖像描述放入標題框中。我的圖片描述存儲在別處。 (我實際上是從Flickr中提取描述,但這在很大程度上是無關緊要的。) 正確,因此,每個圖像都包含一個名爲「id」的html5數據,該數據鏈接到flickr圖像ID。 之前我開的fancybox,我這樣做:

var sDescription; 

$(".fancybox").fancybox({ 
        beforeLoad: function() { 
         var id = this.element.data('id'); 
         var data = { 
          imgID: id 
         }; 
         //setupBlocks(); 
         loadData(data); 
        } 

function loadData(data) { 
        $.ajax({ 
         type: "POST", 
         url: "Ajax/getDescription.php" 
         , 
         data: data 
         , success: function (res) { 

          sDescription = res; 
         } 
        }); 
       } 

這一切正在做的是通過ID,以我自己的腳本,一個頁面,只持有文本字符串,然後把它變成一個字符串。

afterLoad: function() { 

         this.title= this.element.data('title')+sDescription; 
        } 

現在我只是更新標題以保存標題以及描述。當我打開第一張圖片時,它會發出ajax請求,並且在下載文本後,fancybox會打開並顯示標題:Megan 0014「The Wanderer」 當我按左/右鍵時,我可以看到beforeLoad回調正在呼叫ajax請求,但文本沒有更新(仍然說在一個完全不同的模型上的流浪漢 - 名稱前綴確實已更正),除非我關閉/打開fancybox,那麼字符串是正確的。 我已經嘗試過的其他東西:在變量中引用「this」並將其傳遞給loadData,並在ajax加載後設置文本,但標題似乎一旦fancybox被打開就不會更新,不像正常div中的HTML。

作爲最後的手段,我可​​能會預加載每個字符串並將其設置在一個數組中,但我寧願做的只是更新成功的字符串。

我盡力保持這個儘可能通用......但讓我知道是否有任何問題。

編輯:如果我按兩次箭頭鍵(並提供給我第二次加載),文本更新到上一圖像的描述,這只是fancybox不刷新字符串的問題。

Edit2:是的,我編輯了很多。我知道。我發現了onUpdate回調,所以在我的ajax成功中,我調用了$ .fancybox.update();

我的onUpdate看起來是這樣的:

onUpdate : function() { 
         console.log("on update"); 
         this.title = this.element.data('title') + sDescription; 
         console.log(this.title); 

        } 

在控制檯的標題是正確─網頁上的標題是不是。這告訴我,不,標題不能改變,沒有關閉窗口...

回答

0

哇,我覺得愚蠢的沒有想到這一點,但我忘了我可以直接修改div。

$(".fancybox-title").html(this.element.data('title') +" "+ sDescription)