我正在尝试创建一个消息窗口小部件,当用户单击其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
答案 0 :(得分:3)
改为使用委托事件处理程序:
$(document).on('click', ".conversation", function(){
// Your handler code
});
这是通过在不变的祖先元素上侦听事件,然后将jQuery过滤器应用于生成事件的任何元素,然后将该函数应用于匹配并生成事件的任何元素来实现的。
注意:使用最接近的不变的祖先来提高效率,或使用document
作为后备。不要使用'body',因为它有一些错误