2012-01-04 23 views
1

我已經放在一起ajax動力聊天/社交網絡與jQuery的,PHP - 但我有問題的JavaScript。ajax和javascript問題 - 函數沒有觸發或發射多少次

我有一個js文件在主頁面加載php div容器中的js文件在div下面。但只有一個功能發佈味精似乎工作,但其他人不。

我已經嘗試在動態加載的php包括js文件在ajax加載功能工作正常,但我得到同樣的消息/評論多條目。

我很確定它不是PHP,因爲它似乎沒有Ajax參與很好地工作。有沒有辦法解決這個問題?

這是正常工作的功能:

$("#newmsgsend").click(function(){ 

    var username = $("#loggedin").html(); 
    var userid = $("#loggedin").attr("uid"); 
    var message = $("#newmsgcontent").val(); 

    if(message == "" || message == "Enter Message..."){ 
     return false; 
    } 

    var datastring = 'username=' + username + '&message=' + message + '&uid=' + userid; 

    //alert(datastring); 

    $.ajax({ 
     type: "POST", 
     url: "uploadmsgimage.php", 
     data: datastring, 

     success: function(data){ 
      document.newmessage.newmsgcontent.value=""; 

      //need to clear browse value too 
      $('.msgimage').hide('slow'); 
      $('#addmsgimage').show('slow'); 
      $(".usermsg").html(data); 
      $("#control").replaceWith('<input type="file" name="file"/>'); 
      $(".msgimage").remove(); 
     } 
    }); 
}); 

,這是其中的一個不工作:

//like btn 
$(".like").click(function(){ 

    var postid = $(this).attr("pid"); 

    var datastring = 'likeid=' + postid; 

    $.ajax({ 
     type: "POST", 
     url: "addlike.php", 
     data: datastring, 
     success: function(data){ 
      $(".usermsg").html(data); 
     } 
    }); 
}); 
+0

使用Firefox + Firebug,打開NET選項卡並觀察您的請求正在做什麼。 – 2012-01-04 18:01:02

+1

這可能是由於Jquery的Bubbling效應。嘗試stopimmediatepropagation – 2012-01-04 18:02:20

+3

最好。空白。永遠。 – jbabey 2012-01-04 18:03:48

回答

1

從你的帖子,我猜每個消息有「喜歡」按鈕,但你有1個主要提交按鈕。當消息動態加載時,必須在每個消息進入時分配.like,否則只會將其分配給現有消息。

從我收集到的問題(這是一個猜測)可能會使用實時修復,因此jQuery會自動將點擊功能分配給所有消息,包括動態加載的消息;所以不是:

$(".like").click(function(){ 

試試這個:

$(".like").live('click', function(){ 

如果不解決這個問題,那麼我可能不理解它是什麼。

+1

note(source:[jQuery live()doc](http://api.jquery.com/live/)): 「從jQuery 1.7開始,不再推薦使用.live()方法。附加事件處理程序,老版本jQuery的用戶應該優先使用.delegate()而不是.live()。「 – CronosS 2012-01-04 18:36:39

+0

偉大。活着誰知道!接下來,我必須要弄清楚如何獲得評論部分的工作! – ChrisSherwood 2012-01-04 19:08:40

+0

@CronosS,謝謝!看起來我有一些測試要將我的現場活動更改爲http://api.jquery.com/on/ 自從jQuery 1.3.2以來,我沒有看過現場文檔。 看起來像「開」事件旨在觀看某個區域而不是整個文檔,因此應該更有效率。 – 2012-01-04 20:08:16