2013-05-27 58 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。 –