2012-06-19 88 views
0

這是我的問題。我有以下代碼(我拿走了無關緊要的部分):Cufon.refresh意外行爲

$('.poll').click(function (e) { 
     $.post('/my/ajax/script', {}, function(d) { 
      j = $.parseJSON(d); 
      var el = $('#my_msg').find('.message-text').find('p'); 
      // That p has class which was consumed by Cufon at document ready 
      el.html(j.message); 
      $('#my_div').fadeIn(fadeTime, function() { Cufon.refresh(); });      
     }); 
    } 
    e.preventDefault(); 
}); 

如果我刪除Cufon.refresh回調,一切正常(含彈出顯示j.message向上)。但是如果我離開它,文本只會被部分渲染(最後一個詞缺失,整個文本不可見)。

這種行爲的原因是什麼?

+0

你能告訴我們[小提琴](http://jsfiddle.net/)嗎? –

回答

0

我找到了解決方案,它非常簡單。在我的頁面的頭部加載了兩種Cufon準備的字體,用於不同的(不相交的)選擇器。在關於第一個(期望)字體的行後面,調用Cufon.replace。由於沒有其他字體,Cufon將替換此字體提供的所有內容。但之後,第二個字體。

在這種情況下,Cufon.refresh()奇怪地用最後一個字體替換了之前消耗的每個選擇器。發生這種情況是因爲第一個Cufon.replace(...)行沒有指定字體。

Cufon.replace(selector, fontOptions)而不是Cufon.refresh()解決了它。