仅在提交的表单上添加div

时间:2015-04-06 16:44:55

标签: javascript jquery node.js

您好我正在nodejs中创建一个应用程序。想法是一个人可以提出问题而其他人可以回复。我已经提出问题一个问题部分,但回复并显示只有1个问题的回复令我困扰这个代码

function displayMsg(data){
            console.log(data);
            var name = data.name
            var msg = data.msg
            var id = data._id

            $messages.prepend("<div class='bubble'><strong>" + name + " says: " + "</strong>" + "<br/>" + msg + "<form id=" + id + " class='form-inline'><div class='form-group'><input type='text' class='form-control' id='reply" + id +"'></div><button type='submit' class='btn btn-default'>Reply</button></form><div id='replies" + id +"'></div></div>");       
        }

所以这个函数显示一个新问题,我在表单中添加了回复。我为每个表单提供了提交的问题的ID,因此每个表单都有一个唯一的ID。那么回复的输入字段和回复div也是我想要在回复之前添加的。

现在我能够建立一个回复系统,但每个问题都会显示回复。

我希望这些回复仅在他们回复的问题下显示

你可以在这个小提琴中看到我完整的javascript(jquery)代码。它显然不会起作用,因为它的玉和节点+ socketio https://jsfiddle.net/bvLnLkwL/3/

1 个答案:

答案 0 :(得分:0)

我并不是您使用的特定技术的专家,但乍一看我说的问题是您的听众都在倾听同样的全球性{{1} } event,无需确定回复是否与其特定问题ID相关。

除非这是SocketIO自行处理的事情,否则您可能想要为每个表单创建不同的回复频道,或者在收听者中检查问题ID。

例如,发送带有数据的ID:

new reply

或制作独特的频道&#39;,如下所示:

socket.on('new_reply', function(data){
    if(data.question === id) {
        $repliesDiv.prepend("<div id='areply'>"+data.reply+"</div>");
        $('#areply').addClass("fadeInTop");
    }
});

我不确定这最后一个是否会影响性能。