问题描述
在咕咕云的开发中,需要用到ajax
的方法显示任务详情,在此页面上回复任务,删除评论,评论评论(即评论的盖楼),但是盖楼的功能一直想不到怎么解决。
JavaScript代码解决
var cid = data.data.Task.comment[i].cid;
replyComment.id = cid
replyComment.addEventListener("click",function(){
document.getElementsByName("task_id")[0].value = id;
document.getElementById("ParentComment").value = replyComment.id;
alert(replyComment.id);
$("#comment_area").focus();//聚焦到textarea用以输入评论内容
},false);
cid
是利用ajax
方法从后台传到前端的本条评论的Id
- 把评论的
Id
值赋给replyComment
,即每一个回复
按钮绑定到对应的评论 - 给每个
回复
按钮绑定监听时间,当点击回复时触发匿名函数,其中addEventListener()
函数的第三个参数代表了事件机制为冒泡还是捕获,参考JS的事件机制详解 - 利用上述函数,运行的结果是出错。由于上述代码是在运行在
for
中,因此每次alert
的值都是循环的最后一个评论此Id
,并没有起到绑定的作用,这就是坑所在的地方。
var cid = data.data.Task.comment[i].cid;
replyComment.id = cid
replyComment.addEventListener("click",function(){
var strTemp = $(this).attr("id");
document.getElementsByName("task_id")[0].value = id;
document.getElementById("ParentComment").value = $(this).attr("id");
$("#comment_area").focus();//聚焦到textarea用以输入评论内容
},false);
- 修改为上诉代码,利用
$(this).attr("id")
实现获取回复按钮绑定的评论,把它的Id
作为父节点Id
传到后台,则新添加的评论为其子评论,实现了盖楼的功能。
详解js和jquery里的this关键字
jQuery的attr()属性