Rails JS委托事件在加载时触发?

雅库布·科皮希

我正在尝试从单击中的会话中删除一些值,但是似乎它是在没有单击(重新加载)的情况下被触发的。

这是我的代码(咖啡+ erb):

  $(document).on "click", ".top-bar[data-chatbox-id='<%=chat.id%>'] .fa-times", (e) ->
    $box_position = $("div.chat_box[data-chatbox-id='<%=chat.id%>']").position().left
    $("div.chat_box[data-chatbox-id='<%=chat.id%>']").remove()

    ## ################### LINE BELOW IS THE ONE CAUSING PROBLEMS #######
    <% session[:chatrooms].delete(chat.id) %>

    chats = $('.chat_box')
    chats.each (index, element) =>
      if $(element).position().left < $box_position
        $(element).css( 'right', '-=' + 310 + 'px' )

重新加载会话后似乎已清除-是否不应该只单击一次就触发它?

我唯一想到的是:“如果选择器为null或被省略,则事件在到达选定元素时始终会触发。”但是我使用以下方法创建了选定元素:

$(document.body).append("<%= j render '/chatrooms/chatroom' %>")
用户名

那是因为您正在评估运行时中的会话删除,而这不是您想要的。您要在单击事件上执行删除。

为此,您可以在单击上执行Ajax请求,从而在控制器级别调用会话删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章