【问题标题】:Closing a modal window through ajax in rails通过rails中的ajax关闭模式窗口
【发布时间】:2016-04-01 06:20:15
【问题描述】:

不确定使用 jquery 是否是关闭这个通过 ajax 呈现的模态窗口的正确方法...

$ ->
  $('body').on 'click', '#Close', ->
    $("#Root").hide()

当我尝试这个时,它只能工作一次。如果我单击另一个对象以打开不同的模式窗口,则隐藏不起作用。

#Root
  #Bg
  #Main
    #Info
    #MainControls
      #Close{style: "cursor:pointer;"}
        %a.CloseButton
          %i X

模态窗口正在通过这个渲染:

$('body').append('<%= j render partial: "trips/quick_view" %>');

在我看来:

@trips.each do |trip|
  = link_to trip.id, quick_view_trips_path(:js, id: trip.id), remote: true

模态窗口产生动态内容,所以我不确定关闭它的最佳方法是什么,并且如果人们关闭和打开不同的对象也不会滞后应用程序。

【问题讨论】:

  • 不要使用#Root(ID),而是尝试使用.Root(类)。
  • @ZulhilmiZainudin 嗯不知道为什么添加关闭会有所帮助?
  • 在所有javascript加载完成后,检查是否加载了#close标签。如果它动态显示在页面上,您应该使用$(document).on 'click', '#Close' 而不是$('body') 只会在加载javascript时将事件侦听器添加到标签中。
  • @Kkulikovskis 文档不起作用。问题是它不应该隐藏它,因为它使容器仍在 DOM 中,我需要关闭它。当我刷新页面时,#Root 开始不在 DOM 中。

标签: jquery ruby-on-rails ajax jquery-ui ruby-on-rails-4


【解决方案1】:

在评论回复后,我想出了我需要做什么,我只需要使用.remove() 而不是.hide()。这行得通,不确定它是否最终正确,所以除非有更好的答案,否则我会标记这个。

$ ->
  $('body').on 'click', '#Close', ->
    $("#Root").remove()

【讨论】:

    猜你喜欢
    • 2016-03-31
    • 2011-11-22
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多