多次单击后仅显示元素一次

时间:2014-10-31 05:40:36

标签: jquery

我正在制作一个显示在线用户列表的聊天应用程序,因此当我点击一个在线用户时,会打开一个聊天窗口,当我再次点击同一个用户时,会打开一个新窗口。我想要的是当用户再次点击同一用户时,不应该生成新的聊天窗口,它应该显示之前打开的那个。那将是什么条件。这是jquery函数

$(".shout_msg").click(function() {
  var id = $(this).attr('id');
  var name = $(this).text();

  $('body').append("<div id = 'd-"+id+"' class = 'shout_box1'></div>");
  $("#d-"+id).append("<div id = 'h-"+id+"' class = 'header1'>'"+name+"'</div>");
  $("#h-"+id).append("<div id = 'c-"+id+"' class='close_btn1'>&nbsp;</div>")
  $("#d-"+id).append("<div id = 't-"+id+"' class = 'toggle_chat1'></div>");
  $("#t-"+id).append("<div id = 'm-"+id+"' class = 'message_box1'></div>");
  $("#t-"+id).append("<div id = 'u-"+id+"' class = 'user_info1'></div>");
  $("#u-"+id).append('<input name = "shout_message" id = "s-'+id+'" type = "text" placeholder = "Type Message Hit Enter" />');

  $("#s-"+id).keypress(function(evt) {
    if(evt.which == 13) {
      var msg = $("#s-"+id).val();
      // msg = msg.replace(":)","<img src = 'smilenew.gif'/>");
      var sender = "<?php echo $user_check?>";
      var receiver = name;
      var dt = new Date();
      var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();

      $("#m-"+id).append('<p class = "shout_msg" id = "'+count+'">'+sender+':'+msg+'<span class = "time">'+time+'</span></p>');
      $.ajax({
        url: "insertdatanew.php",
        type: "POST",
        data:{
          'sender': sender,
          'receiver': receiver,
          'msg': msg,
          'time': time
        },
        success: function(result) {
          if (result == 'Y') {
            alert("Successful insertion");
          }
        }
      });

      $("#m-"+id).scrollTop($("#m-"+id)[0].scrollHeight);
      //count++;
      $("#s-"+id).val("");
    }
  });
});

1 个答案:

答案 0 :(得分:0)

检查该div是否已存在..

if($('#divid').length){
     // dont append
} else {
     // append
}