先看下
本部落格上面的頂一下,踩一下效果是直接用別人做好的外掛程式放上去的,上星期正好要用到這個效果,就去研究了下。下面就一步一步來實現整個效果。。。。
demo頁面的實現
XML/HTML代碼
- <div class="digg" id="digg">
- <div class="good"> <a href="#">
- <p>這個文檔不錯</p>
- <div class="bar">
- <div id="g_img" style="width:70%"></div>
- </div>
- <span class="num" id="num">70%(7000)</span> </a> </div>
- <div class="bad"> <a href="#">
- <p>文檔有待改進</p>
- <div class="bar">
- <div id="b_img" style="width:30%"></div>
- </div>
- <span class="num">30%(3000)</span> </a> </div>
- </div>
主要一點就是通過百分比來控制g_img的寬度,至於css代碼就不貼出來了。
看下demo就知道了
有了demo,其他實現起來就方便多了,首先是頁面擷取html,頁面第一次載入,用ajax擷取後台資料,不要直接顯示。(這裡為了方便測試,就用asp作為後台語言)
下面是asp輸出html代碼
XML/HTML代碼
- function getdigshtml()'輸出html
- dim rsajax,sql,str,digsnum,undigsnum,digsnumall,digsper,undigsper
- Set rsajax=server.CreateObject("adodb.recordset")
- sql="select * from dig where id=1"
- rsajax.open sql,conn,1,1
- digsnum=rsajax("digs")
- undigsnum=rsajax("undigs")
- if isnull(digsnum) then digsnum=0
- if isnull(undigsnum) then undigsnum=0
- digsnumdigsnumall=digsnum+undigsnum
-
- if digsnumall=0 then
- digsper=0
- undigsper=0
- else
- digsper=FormatNumber(cint(digsnum)/cint(digsnumall),3)*100
- undigsper=FormatNumber(cint(undigsnum)/cint(digsnumall),3)*100
- end if
-
- str="<div class='good'>"
- strstr=str&"<a href=JavaScript:isdigs('digs') >"
- strstr=str&"<p>這個文檔不錯</p><div class='bar'><div id='g_img' style='width:"&digsper&"%'></div></div>"
- strstr=str&"<span class='num'>"&digsper&"%("&digsnum&")</span>"
- strstr=str&"</a></div><div class='bad'>"
- strstr=str&"<a href=JavaScript:isdigs('undigs') >"
- strstr=str&"<p>文檔有待改進</p><div class='bar'><div id='b_img' style='width:"&undigsper&"%'></div></div>"
- strstr=str&"<span class='num'>"&undigsper&"%("&undigsnum&")</span>"
- strstr=str&"</a></div>"
- getdigshtml=str
- end function
輸出完了 接下來就是前台擷取,這時候我們就要用到jquery ajax,為什麼不直接用ajax,原因很簡單,我不會。。。。。看一下jquery中ajax代碼,很簡單
javaScript代碼
- function getdigshtml()//擷取頂一下,踩一下html
- {
- $.ajax({
- type:'POST',
- url:'digg.asp',
- data:'action=getdigshtml',
- success:function(msg){
- $("#digg").html(msg);
- }
- })
- }
輸出完了,接下來一步就是digs和undigs的操作了,跟擷取html的代碼差不多
JavaScript代碼
- function isdigs(digtype)//頂一下,踩一下操作
- {
- $.ajax({
- type:'POST',
- url:'digg.asp',
- data:'action=digs&digtype='+digtype,
- /* beforeSend:function(){
- $("#vote").hide();
- $("#loadings").show();
- }, ajax請求顯示loading效果*/
- success:function(msg){
- switch (msg)
- {
- /* 後台用來判斷
- case '1':
- $("#loadings").hide();
- $("#vote").show();
- alert("請先登入!");
- break;
- case '2':
- $("#loadings").hide();
- $("#vote").show();
- alert("請先下載,再操作!");
- break;
- case '4':
- $("#loadings").hide();
- $("#vote").show();
- alert("您已經參與過評價!");
- break;*/
- case '3':
- getdigshtml();//重新綁定html
- //$("#loadings").hide();
- //$("#vote").show();
- alert("謝謝你的參與!");
- break;
-
- default:
- }
- }
- })
- }
注釋掉的代碼:一部分是後台資料合法驗證用的,beforeSend這個方法是ajax請求執行前的相關操作(用於做loading比較多)
最後一步就是,每次資料提交完並且成功返回,getdigshtml()都要重新擷取綁定下,這樣就保證了資料的即時性。
看下最後的效果 點我下載示範