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 に答える