6

我有<button>ajax ,并希望在成功请求后将其删除。

<script type="text/javascript">
    $(".approve").click(function(){
        var el, image_id =  $(this).data('image-id');
        $.ajax({
            type: "PATCH",
            dataType: "json",
            data: { "approved": "True"},
            url: "/ml/api/image/" + image_id + "/?format=json",
            success: function(data){
                $(this).remove();
            }
        });
    });
</script>

但这不起作用……</p>

4

3 回答 3

24

成功回调中的上下文与单击事件的上下文不同,这意味着this不再引用按钮 DOM 元素。只需再次选择该按钮,它就会将其删除:

$(".approve").click(function(){
    var el = $(this), image_id =  $(this).data('image-id');
    $.ajax({
        type: "PATCH",
        dataType: "json",
        data: { "approved": "True"},
        url: "/ml/api/image/" + image_id + "/?format=json",
        success: function(data){
            el.remove();
        }
    });
});
于 2013-01-27T11:12:35.423 回答
5

另一种方法是将context属性传递给ajax:

$(".approve").click(function(){
    var image_id =  $(this).data('image-id');
    $.ajax({
        context: this,
        type: "PATCH",
        dataType: "json",
        data: { "approved": "True"},
        url: "/ml/api/image/" + image_id + "/?format=json",
        success: function(data){
            $(this).remove();
        }
    });
});
于 2013-01-27T11:19:38.087 回答
0

这是我的方法。简单的。

var element = $(this);

 $.ajax({
     success: function(){          
          element.remove();     
     }
});
于 2016-09-09T15:18:53.483 回答