【问题标题】:Rails JS delegation event triggering on load?Rails JS委托事件在加载时触发?
【发布时间】:2016-08-23 21:18:51
【问题描述】:

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

这是我的代码(咖啡 + 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' )

重新加载会话后似乎被清除了 - 它不应该只在点击时触发吗?

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

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

【问题讨论】:

    标签: javascript jquery ruby-on-rails coffeescript


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多