【问题标题】:Rails UJS "on" for handling ajax eventRails UJS "on" 用于处理 ajax 事件
【发布时间】:2013-12-10 04:57:02
【问题描述】:

我在 Rails 应用程序中使用 jQuery 方法“on”将事件附加到并不总是存在的表单上。当 #myForm 附加到文档时,它似乎没有附加事件处理程序。

这是 UJS 建议的 on() 用法:

$("#myForm").on("ajax:complete", function(xhr, status) { ... }

这是我通常如何实现 jQuery 的 on(),但这似乎不起作用:

$("body").on("ajax:complete", "#myForm", function(xhr, status) {...}

Rails UJS 维基:https://github.com/rails/jquery-ujs/wiki/ajax

【问题讨论】:

  • 第二个参数element是可选的...它用于事件委托
  • 如果您投票结束 - 这很可能是显而易见的事情,请告诉我 :)
  • @MattBall - 原来它与 Rails 相关。 Rails 带有一个名为 UJS 的库。
  • 那些只是事件。 JavaScript 事件绑定 API 就是 jQuery。您以什么方式尝试将事件处理程序与“不起作用”的.on() 的 3 参数版本绑定?请显示您尝试使用的代码。
  • @MattBall 发表感谢

标签: jquery ruby-on-rails ruby-on-rails-4 ujs


【解决方案1】:

UJS 与on 函数没有太大关系。这是由 jQuery 提供的,它有多种形式。 UJS 只是触发ajax:complete 事件,因此您可以自己挂钩。

selector 参数是可选的,所以两者都是

$(...).on("ajax:complete", function(xhr, status) { ... }

$(...).on("ajax:complete", "form", function(xhr, status) { ... }

是有效的用途,尽管它们的工作方式有所不同。

【讨论】:

    【解决方案2】:

    一些有用的链接:

    Event Delegation

    Understanding delegation .on()

    $(selector).on(event,childSelector,data,function,map)
    

    【讨论】:

    • 感谢@Tyagi 的链接 - 他们似乎没有解决关于 UJS 和 2 vs 3 参数的问题。不过谢谢:)
    • 虽然这在理论上可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供参考链接。
    • 希望这会有所启发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多