Jquery - 将 event.data 传递给 .on() 和 .bind()

标签 jquery ajax

据我了解,jQuery 的 future 版本将不会有 bind 所以我尝试使用 on 来代替。不过我遇到了一个问题。

我试图理解为什么 bind 允许我设置 event.dataon 却不允许。

这有效

$(document).bind('ajaxError', '#form-id', function(event, jqxhr, settings, exception){
  $(event.data).render_form_errors($.parseJSON(jqxhr.responseText));
});

这不起作用

$(document).on('ajaxError', '#form-id', function(event, jqxhr, settings, exception){
  $(event.data).render_form_errors($.parseJSON(jqxhr.responseText));  
});

我在一个页面上有多个表单,因此我尝试为每个特定表单呈现错误。

最佳答案

这是因为 on() 的第二个参数是一个选择器,而不是事件数据(因为 on() 也意味着取代 delegate() )。

在您的情况下,on() 的正确语法是:

$(document).on('ajaxError', null, '#form-id', function(event, jqxhr, settings, exception) {
    $(event.data).render_form_errors($.parseJSON(jqxhr.responseText));  
});

顺便说一句,请注意,据我所知,没有任何官方消息来源表示 jQuery 的 future 版本将不会有 bind()on() 确实是要取代 bind()delegate(),但这两种方法都没有被弃用,而且两种方法很可能都会保留在可预见的将来(有很多代码仍在使用它们)。

关于Jquery - 将 event.data 传递给 .on() 和 .bind(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738620/

相关文章:

jquery - 可拖动/可排序助手的临时存在会破坏存储的 ID

php - Symfony路由ajax get方法

jquery - 如何复制div :after to other div的值

javascript - insertAfter() 通过加倍追加

javascript - 使用 Javascript/JQuery 枚举@font-face URL

javascript - 使用 JQuery 和 JavaScript 将事件绑定(bind)到单页应用程序的 DOM

javascript - 如何在Phonegap构建中获取PHP页面?

php - PDO,检查 WHERE 子句中哪些条件未通过

javascript - 可以在没有任何 UI 元素的情况下将 Silverlight 与 AJAX 一起使用吗?

javascript - 如何在后台加载和分析页面而不加载图像/脚本?