2012-01-04 46 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