请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,调试的时候发现问题和回答的点赞与踩部分的问题

    第一个问题是,在点赞与踩的过程中,点赞与踩的箭头高亮颜色变化存在问题,发现每次点击后questionUpVote和questionDownVote的class中已有voted并不会改变,如果在ajax成功后,如果用location.reload(true)刷新页面可以嘛?如果不可以,怎样解决这个问题呢?

    第二个问题是,问题详情页中同一个用户的两个回答,采纳只能选择用户最新一次的回答,而时间较前的回答不能采纳,前端不会发起请求,改怎样解决呢?

用的代码版本是:v1.6.2
谢谢老师!!

正在回答 回答被采纳积分+3

1回答

Jack 2019-07-22 15:14:27

不好意思,这么久才回复。这两个问题的确是项目的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了

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信