2013-05-27 59 views
0

我在Code Igniter Framework中運行的smarty模板中顯示一段代碼,顯示用戶評級和評論。由於foreach()循環,所有註釋div都一次加載。我想讓JQuery在頁面加載時加載5個結果,然後在頁面的底部有一個按鈕,我可以每次加載5個按鈕。 任何人都可以幫助我嗎?在Smarty模板上加載更多JQuery

{{ if ($comments_count > 0): }} 
{{ foreach ($comments as $index=>$comment): }} 
    <div class="notepad"> 
    <div class="notepad-heading"> 
    <span class="evaluation_comment_date">{{= timespan(strtotime($comment- >date_time_added),now()).' '.lang('evaluation_ago') }} 
    </div> 
<table width="750" border="0" align="left"> 

<tr> 
<td width="154" valign="top"><h6 style="display:inline">{{= lang('comment_rating') }}</h6></td> 
<td width="83"><img style="display:inline" src="{{= template_path() . 'images/' . $comment->rating_image }}" alt=""/></td> 
<td width="38" rowspan="5">&nbsp;</td> 
<td width="307" colspan="5" rowspan="5" valign="top">&#8220;{{= $comment->quotation  }}&#8221;</td> 
    </tr> 
    <tr> 
    <td valign="top"><h6 style="display:inline">{{= lang('comment_rating2') }}</h6> </td> 
    <td valign="top"><img style="display:inline" src="{{= template_path() . 'images/' .  $comment->rating_image2 }}" alt=""/></td> 
    </tr> 
    <tr> 
    <td valign="top"><h6 style="display:inline">{{= lang('comment_rating3') }}</h6> </td> 
<td valign="top"><img style="display:inline" src="{{= template_path() . 'images/' . $comment->rating_image3 }}" alt=""/></td> 
    </tr> 
    <tr> 
    <td valign="top"><h6 style="display:inline">{{= lang('comment_rating4') }}</h6> </td> 
    <td valign="top"><img style="display:inline" src="{{= template_path() . 'images/' .  $comment->rating_image4 }}" alt=""/></td> 
    </tr> 
    <tr> 
    <td valign="top"><h6 style="display:inline">{{= lang('comment_rating5') }}</h6> </td> 
    <td valign="top"><img style="display:inline" src="{{= template_path() . 'images/' .  $comment->rating_image5 }}" alt=""/></td> 
    </tr> 
</table> 
    </div> 
{{ if ($index+1 != count($comments)): }}<div class="list_separator"></div>{{ endif }} 
{{ endforeach }} 
{{ else: }} 
<h3>{{= lang('evaluation_no_comments') }}</h3> 
{{ endif }} 

回答

0

最簡單的解決方案就是添加display:none來隱藏元素,然後在用戶單擊按鈕時顯示它們。如果您有很多項目,每次用戶點擊更多按鈕時,必須使用.ajax調用來獲取元素。編寫一個腳本,將用.ajax在js中調用。腳本會重新調用新元素(如果使用SQL查看LIMIT x,y:x - from,y - 元素數)。然後,在.ajax回調中,只需將新元素添加回dom(html)。

另外要注意,你必須synhronize ajax調用。最簡單但不有效的方法是將選項async:false添加到.ajax調用中。否則,如果您多次點擊多個按鈕,項目可能會出現故障。

+0

感謝您的回答。實際上,我使用的是Mysql,我知道如何做到這一點,但它非常複雜,因爲它需要對許多文件和許多功能進行重大修改。 一個想法是將foreach循環後生成的所有html存儲到數組中,並將數組中的代碼提取(附加)到div元素中。我沒有Ajax,Jquery的經驗。你有一個想法如何做到這一點? 此致敬禮。 – NickHoot

+0

只需追加數組並添加樣式顯示:無。切換頁面時,請刪除並添加display:none。 –