2012-02-11 36 views
1

我有一個類似Facebook的聊天。 (你可以看到它@http://www.live-pin.com/)。它從JSON文件獲取最後的消息,併爲每個用戶插入一個單獨的UL,它在檢查ul是否存在以及它是否不存在之前創建。現在的問題是,當我點擊1個聊天欄時,3會同時打開,只有當我點擊最後一個時纔會關閉,我該怎麼辦?我想這個酒吧只打開/關閉時點擊聊天欄,但不會點擊not_clickable。感謝您的幫助在1個對象中應用jQuery函數live()

$(document).ready(function(){ 
getOnJSON(); 
setInterval("getOnJSON()", 60000); 

var Id; 
var target; 
}); 


    function showChat(obj){ 
     $(obj).animate({marginBottom : "0"}).removeClass("hidden_box").addClass("active_box").unbind('click')/*.click(function(){ 
      hideChat(this); 
     })*/; 

    } 
    function hideChat(obj){ 
     $(obj).animate({marginBottom : "-270px"}).removeClass("active_box").addClass("hidden_box").unbind('click')/*.click(function(){ 
      showChat(this); 
     })*/; 
    } 


    function getOnJSON(){ 

    var self = this;  // Added this line, as this changes scope in each() 
    var from;var to;var msg_id;var msg_txt;var new_chat_string; 

    //Getting the data from the json file 
    $.getJSON("/ajax/chat.json.php",function(data){ 

    $.each(data.notif, function(i,data){ 

    from = data.from;to = data.to;msg_id = data.id;msg_txt = data.text; 

      if ($("#chat_"+from+"_lp").length === 0){ 
      $("#boxes").append('<div id="chat_'+from+'_lp" class="chat_box hidden_box clickable_box"><div id="chat_'+from+'_nick" class="chat_name">'+from+'</div><div class="not_clickable"><ul id="chat_'+from+'_txt" class="chat_txt"><li id="' + msg_id + '">'+ msg_txt+'</li></ul><form class="chat_new_message" name="new_msg"><input type="text" placeholder="Enter your message..." class="chat_new_input"/></form></div></div>');  

$('.hidden_box #chat_'+from+'_nick').live("click", function(){ showChat('#chat_'+from+'_lp'); }); 
$('.active_box #chat_'+from+'_nick').live("click", function(){ hideChat('#chat_'+from+'_lp'); }); 
     }else{ 

      $("#chat_"+from+"_txt").append('<li id="' + msg_id + '">'+ msg_txt+'</li>'); 

$('.hidden_box #chat_'+from+'_nick').live("click", function(){ showChat('#chat_'+from+'_lp'); }); 
$('.active_box #chat_'+from+'_nick').live("click", function(){ hideChat('#chat_'+from+'_lp'); }); 
     } 
    }); 
}); 
} 
+1

僅供參考的例子,過多的評論不*不*使代碼更易讀 – ThiefMaster 2012-02-11 17:54:20

+0

爲什麼有這麼多unnecesary評論?這使它很難閱讀。 – elclanrs 2012-02-11 17:54:51

+0

什麼不起作用?請更詳細地描述問題。 – kapa 2012-02-11 18:02:07

回答

0

你需要使用jQuery的.live()函數的。點擊()被應用到文件裝載完成後創建的元素。

例如:$("a.offsite").live("click", function(){ alert("Goodbye!"); });here

+0

謝謝,這是應該工作,但它沒有。 [Enter this site ---](http://live-pin.com)你可以看到在那裏實現的代碼,但它不起作用! – Luis 2012-02-11 18:39:49

+0

是您正在加載的聊天中帶有「新」字樣的角落中的框? – scott 2012-02-11 18:52:55

+0

是的,它是人,它從json文件加載。 – Luis 2012-02-11 18:55:24