jQuery.Event - 我的数据在哪里?

时间:2015-05-27 17:40:57

标签: jquery events

我有一些看起来像这样的代码(缩短了):

$.ajax({
    url: $form.attr('action'),
    data: formData,
    type: $form.find('input[name=_method]').val() || $form.attr('method') || 'POST'
}).done(function (data, textStatus, $xhr) {
    var eventParams = {
        xhr: $xhr,
        validator: validator
    };
    $form.trigger($.Event('ajaxify-success',eventParams));
});

我这样用:

$('#label-form').on('ajaxify-success', function(ev) {
    console.log(ev);
});

ev.data总是undefined。如果我修改eventParams以重新输入数据:

var eventParams = {
    xhr: $xhr,
    validator: validator,
    data: data
};

仍然不起作用。 jQuery正在做一些事情来主动删除数据。为什么?我基本上想要传播ajax done事件并添加一些我自己的额外属性。如何在不丢失data的情况下做到这一点?

2 个答案:

答案 0 :(得分:3)

您不能将data用作jQuery为Event.data保留的任意事件参数。

请参阅Fiddle

答案 1 :(得分:2)

然后根据上一个答案,您不能使用'数据'...更改变量名称,您就可以了。请参阅以下代码段:

var eventParams = {
    xhr: 'myXHR',
    validator: 'myValidator',
    mydata: 'myData'
};

$('#label-form').on('ajaxify-success', function(ev) {
    console.log(ev);
});

$('#label-form').trigger(jQuery.Event( 'ajaxify-success', eventParams ));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form id="label-form">form</form>