老师,调试的时候发现问题和回答的点赞与踩部分的问题
来源:8-14 给问题或回答点赞踩
weixin_慕勒8503844
2019-07-18
第一个问题是,在点赞与踩的过程中,点赞与踩的箭头高亮颜色变化存在问题,发现每次点击后questionUpVote和questionDownVote的class中已有voted并不会改变,如果在ajax成功后,如果用location.reload(true)刷新页面可以嘛?如果不可以,怎样解决这个问题呢?
第二个问题是,问题详情页中同一个用户的两个回答,采纳只能选择用户最新一次的回答,而时间较前的回答不能采纳,前端不会发起请求,改怎样解决呢?
用的代码版本是:v1.6.2
谢谢老师!!
1回答
-
Jack
2019-07-22
不好意思,这么久才回复。这两个问题的确是项目的bug,我看部署好的demo也有这问题 o(╥﹏╥)o
问题一:可以用location.reload(true)刷新页面,但可以直接通过js改变class
answer_sample.html
<span id="answerVotes" class="votes">{{ answer.total_votes }}</span>
改成
<span class="votes">{{ answer.total_votes }}</span>
qa.js中$(".answer-vote")函数改成
$(".answer-vote").click(function () {
// 给回答投票
const answer_id = $(this).closest(".answer").attr("answer-id");
const answer = $('div[answer-id=' + answer_id + '] .votes');
if ($(this).hasClass("up-vote")) {
vote = "U";
} else {
vote = "D";
}
$.ajax({
url: '/qa/answer/vote/',
data: {
'answer': answer_id,
'value': vote
},
type: 'post',
cache: false,
success: function (data) {
if (vote === "U") {
$('div[answer-id=' + answer_id + '] .down-vote').removeClass('voted');
$('div[answer-id=' + answer_id + '] .up-vote').addClass('voted');
} else {
$('div[answer-id=' + answer_id + '] .up-vote').removeClass('voted');
$('div[answer-id=' + answer_id + '] .down-vote').addClass('voted');
}
answer.text(data.votes);
}
});
});问题二:bug比你说的更严重,不是只能采纳同一个用户的最新回答,是只能采纳所有未被接受回答中的最后一个。是qa.js的问题,$("#acceptAnswer").click(function ()...这个函数里,当有多个回答的时候,每个回答都有id="acceptAnswer",$("#acceptAnswer")只会选中第一个未被接受的回答,改一下jQuery选择器就好了
answer_sample.html
<i id="acceptAnswer" class="fa fa-check accept" aria-hidden="true" title="点击采纳回答"></i>
改成
<i class="fa fa-check accept acceptAnswer" aria-hidden="true" title="点击采纳回答"></i>
qa.js改成
$(".acceptAnswer").click(function () {
// 接受回答
const answer_id = $(this).closest(".answer").attr("answer-id");
const answer = $('div[answer-id=' + answer_id + '] .acceptAnswer');
$.ajax({
url: '/qa/accept-answer/',
data: {
'answer': answer_id
},
type: 'post',
cache: false,
success: function (data) {
$(".accepted").removeClass("accepted");
$(".accepted").prop("title", "点击接受回答");
answer.addClass("accepted");
answer.prop("title", "该回答已被采纳");
}
});
});谢谢你的问题,我已更正push到master了
00
相似问题