我有一個微博/評論系統,每次提交新的微博或評論時,頁面將刷新以顯示它。JQuery可以檢測出新類嗎?例如。剛剛發佈的新評論
因爲我已經在表單上設置了ajax,所以我現在想要添加微博或添加沒有頁面刷新。
到目前爲止,我有:
if @micropost.save
format.js { render :post_on_wall }
else
format.js { render :form_errors }
end
你不需要是在軌道上的專家紅寶石明白髮生了什麼事在這個片段。如果表單在點擊帖子之前通過了所有驗證和用戶實際類型的驗證,那麼「if @ micropost.save」將爲true,並且它將在我命名爲「post_on_wall」的文件內執行js。如果「@ micropost.save」將執行「form_errors」中的代碼。
裏面的form_errors我添加了一個提醒只是爲了檢查微博不發佈,當用戶什麼都沒有輸入,並點擊張貼。它工作正常。
在「post_on_wall」文件,我有這樣的:
$('.microposts').prepend('<%= j render("users/partials/microposts") %>');
的問題,這是它基本上抓住一切都是通過循環在文件這就是正在呈現「用戶/諧音/ 微柱的微觀柱「然後將它們放在」.microposts「div中的所有內容之上。即使發佈位於「.microposts」頂部的micropost的實際表單也被壓低到剛剛添加到頁面的內容下方。
這是我的html結構。
<div class='cf' id='content'>
<div id='leftColumn'>
</div>
<div class='microposts'>
</div>
<div id='rightColumn'>
</div>
</div>
每個微博及其相關注釋存儲在名爲「.postHolder」的類中。
我覺得我這樣做是錯誤的。文件this:「users/partials/microposts」指向基本上有幫助一次顯示10個微博的代碼。這是用來完全不同於我想要做的事情(分頁+無盡的滾動)。
無論如何,我覺得我應該接近的方式是如何檢測剛剛發佈的新帖子。它應該被檢測爲一個新的「.postHolder」類,然後發現它應該被添加到「postHolder」列表的頂部,而不是替換它上面的micropost表單。
我想創建一個單獨的div來容納所有的microposts,然後將這個div放在micropost窗體的下面..這樣我就不用擔心窗體被推下來了,因爲它不會是裏面的div包含所有microposts,事實上將是我將要預先考慮的。
無論如何,我真的很喜歡一個例子或一些很好的建議,可以幫助我實現此功能。
謝謝你的時間 親切的問候。
所以你的問題是你的微博插入DOM中的位置? – 2012-04-09 16:22:07
那麼爲什麼不加入'.postHolder'呢? – Alexander 2012-04-09 16:29:34
因爲.postHolder是一個持有每個微博的類。這隻會將所有循環微博添加到頁面上的.postHolder類中。 – LondonGuy 2012-04-09 16:30:51