2013-04-01 73 views
0

我得到一些數據使用AJAX,prepend元素body然後顯示它。顯示後,我需要對新元素執行一些客戶端操作(例如,我需要使用codecogs' script呈現Latex)。我的代碼如下所示:fadeIn回調不工作從jquery.ajax成功

$.ajax({ 
/* ... */ 
success: function(data){ 
    /* new element generation... */ 
    $(newelement).fadeIn(100, LatexIT.render('*')); 
}, 
/* ... */ }); 

正如你可以看到我叫LatexIT.render('*')從淡入回調。它應該在動畫結束後執行任何動作LatexIT.render('*')。但從$.ajax success調用時,回調不起作用,儘管淡入淡出自身正常發生。

UPDATE:我試圖用任何簡單的函數代替LatexIT.render('*'),但它不起作用。和fadeIn(100, function() { LatexIT.render('*') });確實工作時從ajax成功外部調用。

回答

2

LatexID.render('*')是語法調用.render方法而不是綁定它。除非是本身返回功能,這是不可能的,你需要使用這個語法:

.fadeIn(100, function() { LatexIT.render('*') }); 

你也可以這樣做:

.fadeIn(100, LatexIT.render.bind(undefined, '*')) 

假設你需要支持的瀏覽器有.bind

+0

我試圖取代'LatexIT.render(「*」)'用任何簡單的功能,但它不能正常工作。儘管'fadeIn(100,function(){LatexIT.render('*')});'**在從ajax成功之外調用時可以工作。 – Juribiyan

+1

@Juribiyan你有什麼錯誤嗎? –

1

在那裏你沒有給它一個成功的回調,你正在執行你的渲染,並給出渲染方法返回到淡出動畫的完整參數,這實際上不是動畫可以在最後調用的函數。

你應該只把它包裝成一個匿名函數: ​​

+0

試過了,不起作用。 – Juribiyan