在jQuery $(this)中,不要将当前元素返回给我

时间:2016-05-29 01:12:37

标签: javascript jquery

我试图根据具体情况向特定文字显示图标。

例如,如果数据成功保存,我会显示“您的数据已保存。”#39;和正确的图标。

我的问题出现在$.ajax部分之前,一切正常,但之后,我认为我$(this).find(...)没有给我回复该元素。

有可能吗?

这是我的代码:

$('form.modal-form').on("submit", function (event) {
    event.preventDefault();

    icon = 'fa-spinner fa-pulse';
    text = 'Save in progress';
    $(this).find('.modal-footer .pull-left').html('<i class="fa ' + icon + ' fa-fw"></i><span class="hidden-xs">' + text + '</span>');



    $.ajax({
        type : 'POST',
        data : $(this).serialize(),
        url  : 'assets/php/ajax/'+$(this).data('target')+'.php',
        success: function(response){
            var json = $.parseJSON(response);
            if(json.type=='success'){
                icon = 'fa-check';
                text = json.message;
                $(this).find('.modal-footer .pull-left').html('<i class="fa ' + icon + ' fa-fw"></i><span class="hidden-xs">' + text + '</span>');
            }
            if(json.type=='error'){
                icon = 'fa-exclamation';
                text = json.message;
                $(this).find('.modal-footer .pull-left').html('<i class="fa ' + icon + ' fa-fw"></i><span class="hidden-xs">' + text + '</span>');
            }
        }
    });
});

1 个答案:

答案 0 :(得分:0)

在ajax中,回调this引用与submit处理程序中的对象不同的对象,所以不要丢失它,你应该首先将它分配给某个东西( to在event.preventDefault之后,在后面的回调中将其显示为,例如:

var that = $(this)

并使用that代替$(this)