我想做一个类似的
我现在的代码是
$("dl>.view_comment").toggle(function(){
var comment=$(this);
var id=$(this).parent().children("dt").children("span").text();
alert($(this).next().html());
if($(this).next().html()==null){
alert("空的");
$.ajax({
type:"GET",
url:"comment/"+id+".xml",
dateType:"xml",
success:function(data){
$(data).find("comment").each(function(){
var name=$(this).children("name").text();
var time=$(this).children("time").text();
var content=$(this).children("content").text();
var html="<dd class=\"comment\">"+name+" "+time+" "+content+"</dd>";
$(comment).append(html);
});
},
error:function(){
alert("error");
}
});
}
$(this).nextAll("dd").slideDown();
},第一次点击,加载评论 显示出来
第二次点击,收缩回去我现在的问题是,
第一次点击 可以正常查询显示。
但点第二次不能收缩回去。然后再点一次,又会查询一次,这样评论就显示重复了。我希望的效果是和新浪微博的一样的,
第一次点击 查询评论并显示
第二次点击 收缩评论
第三次再点击,就直接显示,不要再通过ajax查询了。
该怎么弄呢?
我的问题出在哪儿?
各位高手指教指教。
我现在的代码是
$("dl>.view_comment").toggle(function(){
var comment=$(this);
var id=$(this).parent().children("dt").children("span").text();
alert($(this).next().html());
if($(this).next().html()==null){
alert("空的");
$.ajax({
type:"GET",
url:"comment/"+id+".xml",
dateType:"xml",
success:function(data){
$(data).find("comment").each(function(){
var name=$(this).children("name").text();
var time=$(this).children("time").text();
var content=$(this).children("content").text();
var html="<dd class=\"comment\">"+name+" "+time+" "+content+"</dd>";
$(comment).append(html);
});
},
error:function(){
alert("error");
}
});
}
$(this).nextAll("dd").slideDown();
},第一次点击,加载评论 显示出来
第二次点击,收缩回去我现在的问题是,
第一次点击 可以正常查询显示。
但点第二次不能收缩回去。然后再点一次,又会查询一次,这样评论就显示重复了。我希望的效果是和新浪微博的一样的,
第一次点击 查询评论并显示
第二次点击 收缩评论
第三次再点击,就直接显示,不要再通过ajax查询了。
该怎么弄呢?
我的问题出在哪儿?
各位高手指教指教。
点击判断表空就ajax,否则对已有的节点树进行递归解析,再innerHTML。
嗯 这我知道
我也是这样写的
我写的是
toggle(function(){
//请求评论并显示
},
function(){
//隐藏评论
});但现在的问题是。 当第三次点击的时候,还会再请求一遍 。这样评论就重复了。。
我希望点击的时候先判断评论是否已经加载 如果没有加载 再去请求 否则直接显示。开始想过第一次请求评论后,把内容存在一个变量里,每次判断这个变量是否为空。
但是 我一个页面有很多篇文章 ,
这样的话 就需要很多变量,,这个变量刚怎么设置呢?。
$(".view_comment").toggle(function(){
//查看评论
var dl=$(this).next();
var comments=$(this).next().children();
var id=$(this).parent().parent().attr("id");
if(comments.length>0){
//已经请求过评论内容,不再通过ajax请求
}
else{
//没有请求过评论内容
$.ajax({
type:"POST",
url:"comment/"+id+".xml",
dateType:"xml",
error:function(){
$("<dd>没有评论</dd>").appendTo(dl);
},
success:function(data){
$(data).find("comment").each(function(){
var name=$(this).children("name").text();
var time=$(this).children("time").text();
var content=$(this).children("content").text();
var html=$("<dd>"+name+" "+"time"+" "+content+"</dd>");
$(html).appendTo(dl);
});
}
});
}
$(this).next().slideDown();
},
function(){
//收缩评论
$(this).next().slideUp();
});
只需要判断评论元素是否存在就可以了
var comments=$("dl").children();if(comments.length>0){
//dl元素存在子元素,即评论存在
}