2012-01-14 45 views
3

我有一块jQuery代码,通过POST查询页面,然后该页面返回一些文本显示在页面上。这是我使用的成功做到这一点的代码:我试图改变$("#poll").html(responseText)$("#poll").html(responseText).fadeIn(1500);jQuery:使用fadeIn()与.html()

$.post(
    "query.php?module=vote", 
    {answer: ans, pid: pid, to: to, page: page}, 
    function(responseText){ 
     $("#poll").html(responseText); 
    }, 
    "html" 
); 

,但它不工作。

我必须做什么/更改以使文本淡入页面?

+1

请创建一个小提琴。它有很多帮助。 – Diode 2012-01-14 08:39:42

回答

4

为了淡入,元素必须先被淡出。尝试淡出立即(0秒),然后使用一个回调函数添加的内容和褪色。

$.post(
    "query.php?module=vote", 
    {answer: ans, pid: pid, to: to, page: page}, 
    function(responseText){ 
     $("#poll").fadeOut(0,function(){ 
      $(this).html(responseText).fadeIn(); 
     }); 
    }, 
    "html" 
); 
+1

使用.hide()代替.fadeOut(0)>> $(“#poll”)。hide()。html(responseText).fadeIn(); – 2012-01-14 10:08:04

+0

我同意@frank_neff。 (因此,我的答案...) – PPvG 2012-01-15 11:49:41

1

在你淡入淡出之前,你必须确保它是隐藏的。试试这个:

$("#poll").html(responseText).hide().fadeIn(1500); 

或者,你可以确保该元素是用隐藏的CSS:

#poll { 
    display: none; 
} 

现场演示(展示了这两种方法):http://jsfiddle.net/n5rnw/1/

0

因为元素是展示由默认的,所以需要淡出/隐藏第一然后再淡入的elemet,像这样的:使用一些样本响应http://jsfiddle.net/:

$('#element').fadeOut(500).html(content).fadeIn(500);