据我了解,jQuery 的 future 版本将不会有 bind
所以我尝试使用 on
来代替。不过我遇到了一个问题。
我试图理解为什么 bind
允许我设置 event.data
但 on
却不允许。
这有效
$(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/