根据我的理解,jQuery的未来版本将不会bind
,所以我尝试使用on
。我遇到了一个问题。
我想了解为什么bind
允许我设置event.data
,但on
没有。{I}}
这有效
$(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));
});
我在一个页面上有多个表单,所以我试图为每个特定表单呈现错误。
答案 0 :(得分:4)
那是因为on()的第二个参数是选择器,而不是事件数据(因为on()
也意味着取代delegate())。
您案例中on()
的正确语法是:
$(document).on('ajaxError', null, '#form-id', function(event, jqxhr, settings, exception) {
$(event.data).render_form_errors($.parseJSON(jqxhr.responseText));
});
顺便说一句,请注意,据我所知,没有官方消息称未来版本的jQuery不会有bind()
。 on()
确实意味着取代bind()
和delegate()
,但这两种方法都不被弃用,并且在可预见的将来两者都很可能会出现(有很多代码仍然存在)使用它们。)