2014-10-31 7 views
0

온라인 사용자 목록을 보여주는 채팅 응용 프로그램을 만들고 있으므로 온라인 사용자 한 명을 클릭하면 채팅 창이 열리 며 동일한 사용자를 다시 클릭하면 새 창이 열립니다 . 내가 원하는 것은 사용자가 동일한 사용자를 다시 클릭 할 때 새 채팅 창을 생성해서는 안되며 이전에 열었던 대화 창을 표시해야합니다. 그 조건은 무엇입니까? 여기 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(""); 
    } 
    }); 
}); 

답변

0

확인 즉 이미 존재 div에 경우 ..

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

이봐, 난 당신이하지 않았다이다. 내 코드와 관련하여 나에게 줄 수 있니? 나는 jquery에 완전히 익숙하다. –

관련 문제