首页 > 解决方案 > Jquery命名函数不能作为回调

问题描述

也许这是一个愚蠢的问题,但我不明白为什么会发生

我有这个 jquery 代码:

    $(document).ready(function(){
        // Coloca datos JSON en sus respectivos campos
        function setData(data){
            $('#id').val(data.id);
            $('#name').val(data.name);
            $('#status').val(data.status);
            $('#rating').val(data.rating);
            $('#description_short').val(data.description_short);
            $('#description_long').val(data.description_long);
            image_url = (data.image_url) ? data.image_url + "?" + new Date().getTime() : 'https://via.placeholder.com/512';
            $("#image").attr('src', image_url);

            $('button[name=btn-delete]').prop('disabled', false);
        };


        $('button[name=btn-edit]').click(function(){
            $('#modal-form').attr('action', "{{route('categories.index')}}/" + $(this).data('id'));
            $.get("{{route('categories.index')}}/" + $(this).data('id') + "/edit")
            .done(function (data){
                setData(data);
        });
    });

它按预期工作,但如果我这样做:

        $('button[name=btn-edit]').click(function(){
            $('#modal-form').attr('action', "{{route('categories.index')}}/" + $(this).data('id'));
            $.get("{{route('categories.index')}}/" + $(this).data('id') + "/edit")
            .done(setData(data));
        });
    });

我的表格没有填写,我不明白为什么 setData() 不能作为回调

有人可以帮我理解其中的区别吗?

谢谢你的帮助!!

标签: javascripthtmljquery

解决方案


您可以通过传递引用setData而不是调用它来使其工作,例如:

$('button[name=btn-edit]').click(function(){
    ...
    
    $.get("{{route('categories.index')}}/" + $(this).data('id') + "/edit")
       .done(setData);
});

推荐阅读