不刷新(AJAX)获取文章的内容

相信大家都知道AJAX评论这玩意。AJAX评论带来了很多好处,不用在刷新页面就能发表评论。实时提交,实时显示。很多人都用上了都给自己的BLOG上添加了这样的功能。方法在这就不说了,很多人都作了详细的讲解。在这想跟大家分享下。AJAX加载文章的内容。当然,这里还是基于JQ的load方法来实现。OK,来看效果:

load1

load2

load3

首先,定义三个变量:

  1. var objTag= $(".post");//定义要获取内容所在的节点
  2. var num= objTag.length;//定义节点的数量
  3. var _cache=new Object;//建立一个缓存对像

然后构建一个加载的函数:

  1. function loadentry(n){
  2.     var _url=$(objTag[n]).children(".archive-post-title").children("h2").children("a").attr("href");//定义要加载文章的地址
  3.     $('<div class="details"><div style="width:160px;margin-top:8px;padding:0 2px;font-size:12px;background: #01E343; color:#FFF;">正在加载文章内容,请稍等!</div></div>').insertBefore($(objTag[n]).children(".singledata"));//插入提示信息
  4.     if(_cache[_url]==null){//判断是否有缓存
  5.         $(objTag[n]).children(".details").load(_url+" .post .entry",function(){
  6.             _cache[_url]=$(objTag[n]).children(".details").html();
  7.             $('<span class="archive-arrow"><span title="收起全文" class="hide fRight" onclick="closentry(&quot;'+n+'&quot;);">收起全文↑</span></span>').insertAfter($(objTag[n]).children(".details"));
  8.         });//加载文章内容
  9.     }else{
  10.         $(objTag[n]).children(".archive-post-title").children(".archive-arrow").remove();
  11.         $(objTag[n]).children(".details").html(_cache[_url]);//直接显示缓存对像的内容
  12.         $('<span class="archive-arrow"><span title="收起全文" class="hide fRight" onclick="closentry(&quot;'+n+'&quot;);">收起全文↑</span></span>').insertAfter($(objTag[n]).children(".details"));
  13.     }
  14.     $(objTag[n]).children(".archive-post-title").children(".archive-arrow").remove();
  15. }

这部分对于不懂JQ的人来说可能有点复杂。懂JQ的人看起来一定很简单。就是一个对DOM的操作。通过动态的插入清除节点来实现我们需要的效果。关健在于“.load()”的用法。

到这已经实现了加载了。接着需要做个删除也就是收起全文;相比加载,删除要简单的多了,就是直接删除节点就行了。

  1. function closentry(n){
  2.     $(objTag[n]).children(".details").animate({height: 'toggle'}, "slow",function(){$(this).remove()});
  3.     $(objTag[n]).children(".archive-arrow").remove();
  4.     $('<div class="archive-arrow"><span title="阅读全文" class="show" onclick="loadentry(&quot;'+n+'&quot;);">阅读全文↓</span></div>').insertAfter($(objTag[n]).children(".archive-post-title").children("p"));
  5. }

这段代码就是一个基本的节点操作。在这就不作说明了;当然,最后我们需要插入节点并绑定事件。

  1. $(document).ready(function(){
  2.     for(a=0;a<num;a++){
  3.         $(objTag[a]).children(".archive-post-title").children(".archive-arrow").append('<span class="show" title="阅读全文" onclick="loadentry(&quot;'+a+'&quot;);">阅读全文↓</span>');
  4.     }
  5. });

OK,到这里这个AJAX加载效果就完成了。详细的效果可以点击侧边栏的分类导航。

GOTOP53 条评论 To 不刷新(AJAX)获取文章的内容

  1. joyla 说道:

    太帅了!我就在使用!

  2. 烟火 说道:

    看下无刷新评论的效果

  3. 北斗天狼 说道:

    我也试一试。

  4. xiaoniba 说道:

    看一下呢..
    ajax

  5. aboog 说道:

    纯支持下..

  6. 有点复杂,还是不用吧。要么来个插件。

  7. 博客外汇 说道:

    好的!收下。。。回去自己改改!

  8. littlebear 说道:

    不怕别人没有js嘛?

  9. MSOWQ 说道:

    谢谢分享咯/

  10. 不懂ajax,纯支持下

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

无觅相关文章插件,快速提升流量