2011-12-21 20 views
0

我想從php文件中獲取一些文本並在瀏覽器中使用jquery進行顯示,以便每當新行添加到其他頂部並使淡入效果時: 我寫了一個腳本,如:使用jquery創建div,並生效淡入

$(function() { 
    setInterval(function() { 
    var html = $("#response").load("new_feed.php"); 
    $("#foo").append("<div>"+html+"</div>"); 
    $("#foo").fadeIn('slow'); 
}, 1000); 
} 

<div id="foo" align="left"></div> 

,但它只是在一次和顯示輸出,如創建一個div:

[object Object] 
[object Object] 
[object Object] 
... 
[object Object] 

回答

6

您有新創建的div來工作,你申請fadeIn效果#foo。試試這個:

$(function() { 
    setInterval(function() { 
     $.get("new_feed.php", function(result) { 
      $("<div></div>") 
       .hide() 
       .html(result) 
       .prependTo("#foo") 
       .fadeIn("slow"); 
     }); 
    }, 1000); 
}); 

正如你可以看到我用.get()不​​。因爲​​函數將內容加載到匹配選擇器。在你的情況下,它從new_feed.php獲取內容嘗試將其內容加載到#response(我不知道它是否存在)。

​​函數返回jQuery對象,因此當您將它分配給html變量時,您會看到[object Object]

+0

發感謝它的工作優秀..所以很好的朋友:) – 2011-12-21 08:34:01

0

它也可以像這樣工作。一探究竟。

$("#foo").append("<div>"+html+"</div>").show('slow'); 

         OR 

$("#foo").append("<div>"+html+"</div>").fadeIn('slow'); 

這也許對你有幫助..

感謝。

0

那是因爲您使用不正確。我會盡力解釋。基本上html現在被設置爲jquery對象,而不是實際的響應。你在做什麼是加載到具有ID響應的節點的HTML。你應該能夠做到像

var html = '' 
$().load("new_feed.php", function(response, status, xhr) { 
    html = response; 
}); 

此外,這可能會工作太,因爲HTML是jQuery的節點,試試這樣吧。

$(function() { 
    setInterval(function() { 
    var node = $("#response").load("new_feed.php"); 
    $("#foo").append("<div>"+node.html()+"</div>"); 
    $("#foo").fadeIn('slow'); 
}, 1000); 
} 

<div id="foo" align="left"></div> 
+0

抱歉,但沒有幫助..它顯示空空......空雖然螢火顯示正確響應由new_feed.php – 2011-12-21 08:22:24

1

您是否試過$.prepend()$.prependTo()

HTML

<div id="foo"></div> 

jQuery的

$(function() { 
    setInterval(function() { 
     $("<div/>").hide().load("http://fiddle.jshell.net/salman/KPG9M/show/", function() { 
      $(this).prependTo("#foo").fadeIn("slow"); 
     }); 
    }, 5000); 
}); 

Demo

+0

它會更好,如果'prepend'和'fadeIn'在'.load()'''成功'回調由於它的異步行爲。 – 2011-12-21 08:32:35

+0

@Emre:絕對正確,只是做到了。 – 2011-12-21 08:34:53