重构jQuery Ajax监听器以使用.on()而不是.live()

时间:2016-04-20 18:30:59

标签: javascript jquery ajax

编辑这是最近升级的Rails 4应用。

我正在尝试重构此ajax事件侦听器以使用.on()而不是.live()。前两个代码块已经重构,最后一个代码块就是我被卡住的地方。从我所看到的开始,它是错误的,但仍然起作用。

我如何重构这个以使它成为特定ajax:success事件的全局监听器?

这是提交表单并触发ajax事件的代码。

修改忘记提及该表单是远程的。

jQuery(document).on('click', '.form_submitter', function () {
        if ((forms = $(this).parents('form')).size != 0) {
            var form = forms[0];

            if (jQuery(form).attr('data-remote')) {
                jQuery(form).trigger('submit');
            } else {
                forms[0].submit();
            }
        }
        return false;
    });

这是在提交特定表单成功后创建自定义事件的代码。

jQuery(document).on('ajax:success','form.my_form', function (event, data) {
    // Fire a custom event
    jQuery(this).trigger('custom_event', data);
});

这是监听自定义事件并执行操作的代码块。它没有被重构。

jQuery('*').live('custom_event', function(event, data) {
    // Do stuff
)};

我的理解是.on()在尾随的parens中需要一个选择器,但'*'不是合适的选择器。有办法解决这个问题吗?

0 个答案:

没有答案