在ajax调用替换页面内容后,单击函数不起作用

时间:2014-07-08 11:26:50

标签: javascript jquery ajax coffeescript

我正在尝试创建一个消息窗口小部件,当用户单击其div并且每30秒刷新一次时会打开一条消息。

问题是在窗口小部件刷新后,点击功能会停止工作。我猜这与设置点击时添加的新元素不存在的事实有关。我用firebug测试了它,如果我在重新加载后运行脚本,它会一直工作,直到下一次刷新。

有没有人知道在ajax调用之后重置类似内容的正确方法是什么?

我在下面加入了我的coffeescript代码:

refreshPartial = ->
  $.ajax url: "refresh-messages-feed"

$(document).ready ->
  myElem = document.getElementById("messagesFeed")
  setInterval refreshPartial, 30000  if myElem?
  $(".conversation").click ->
    url = "/conversations/small/" + $(this).attr("id")
    console.log url
    $.ajax
      url: url
      cache: false
      success: (html) ->
        $("#conversation").html html

1 个答案:

答案 0 :(得分:3)

改为使用委托事件处理程序:

$(document).on('click', ".conversation", function(){
     // Your handler code
});

这是通过在不变的祖先元素上侦听事件,然后将jQuery过滤器应用于生成事件的任何元素,然后将该函数应用于匹配并生成事件的任何元素来实现的。

注意:使用最接近的不变的祖先来提高效率,或使用document作为后备。不要使用'body',因为它有一些错误