连续回复评论后取消回复,评论框只还原到上一级

应用开发者 勇康博客网 1月前 150

最近打算摸索一下主题的写法,过程中遇到的一些坑,记录一下,不知道有没有遇到相同问题的小伙伴

先贴代码:

zbp.plugin.on('comment.reply.start', 'yk_cool_summer', function (i) {
    $('#inpRevID').val(i);
    var frm = $('#divCommentPost'), cancel = $('#cancel-reply');
    var div = document.createElement('div');
    div.id = 'temp-frm';
    div.style.display = 'none';
    frm.before(div);
    $('#AjaxComment' + i).before(frm);
    cancel.show();
    cancel.click(function () {
        $('#inpRevID').val(0);
        var temp = $('#temp-frm'), frm = $('#divCommentPost');
        if (!temp.length || !frm.length) return;
        temp.before(frm);
        temp.remove();
        $(this).hide();
        return false;
    });
    try {
        $('#txaArticle').focus();
    } catch (e) {}
    return false;
});

写主题的小伙伴对这段代码应该不陌生,这段代码是回复评论时候触发的,应该算是zblog回复评论经典写法,我看很多主题基本都是这种写法,有差异那也是大同小异。

问题:

cancel.click方法体内temp.before(frm)实际测试过程中,如果连续回复评论后取消回复,评论框只会还原到上一次,而不是最初始的位置。并且我发现其实有部分主题都存在这种问题。也没去研究其他大佬是如何规避这个问题的,先贴一下我的优化方案,欢迎站点其他大佬们指点更优雅的解决办法。

优化代码:

zbp.plugin.on('comment.reply.start', 'yk_cool_summer', function (i) {
    $('#inpRevID').val(i);
    var frm = $('#divCommentPost'), cancel = $('#cancel-reply');
    var div = document.createElement('div');
    div.id = 'temp-frm';
    div.style.display = 'none';
    frm.before(div);
    $('#AjaxComment' + i).before(frm);
    cancel.show();
    cancel.click(function () {
        $('#inpRevID').val(0);
        var temp = $('#temp-frm'), frm = $('#divCommentPost');
        if (!temp.length || !frm.length) return;
        $(".yk_article").after(frm);
        temp.remove();
        $(this).hide();
        return false;
    });
    try {
        $('#txaArticle').focus();
    } catch (e) {}
    return false;
});

其实就改了一行代码,把temp.before(frm);换成了$(".yk_article").after(frm);  yk_article是初始评论框上一个兄弟标签class,不知道这种写法有没有隐藏的坑

最新回复 (0)
全部楼主
    • ZBlogger技术交流中心
      2
          
返回