JQuery вызов функции из другого файла - PullRequest
0 голосов
/ 11 февраля 2020

У меня 2 js файлов, и мне нужно вызвать функцию в одном файле из другого файла.

(function ($) {
    function sendMail(subject, message) {
        return $.ajax({
            url: '',
            type: '',
            headers: {'': getCookie('')},
            data: {'subject': subject, 'message': message},
            success: function (data) {},
            error: function (data) {}
        });
    }
})($v1);

И мне нужно вызвать функцию sendMessage из следующего файла :

(function ($) {
    $('#post-form').on('submit', function (event) {
        event.preventDefault();
        $('#submit-btn').attr('disabled', 'true');
        setTimeout(function () {
           $('#submit-btn').removeAttr('disabled');
        }, 1500);
        sendMail($('#subject').val(), $('#text').val())
    });
})($v1);

Как мне это сделать?

1 Ответ

0 голосов
/ 11 февраля 2020

Ваша функция sendMail находится в своей области видимости и не может выйти сама по себе. Вам нужно выйти из ограничений из локальной области видимости, поэтому вам нужно присоединить его к «глобальному» объекту.

Таким образом, вы можете сделать его плагином jQuery через $.fn. или прикрепить его к оконный объект, или и то и другое, чтобы попасть в глобальную область видимости.
Делать его плагином jQuery действительно имеет смысл, только если вы на самом деле получаете данные из объекта, из которого вызываете его, но нет никакой причины, почему ты не можешь сделать это так.

(function ($) {
    window.sendMail = $.fn.sendMail = function(subject, message) {
        return $.ajax({
            url: '',
            type: '',
            headers: {'': getCookie('')},
            data: {'subject': subject, 'message': message},
            success: function (data) {},
            error: function (data) {}
        });
    }
})($v1);

(function ($) {
    $('#post-form').on('submit', function (event) {
        event.preventDefault();
        var $btn = $('#submit-btn');
        $btn.attr('disabled', 'true');
        setTimeout(function () {
           $btn.removeAttr('disabled');
        }, 1500);

        // now you can choose which to use.
        $btn.sendMail($('#subject').val(), $('#text').val())
        //or
        window.sendMail($('#subject').val(), $('#text').val())
    });
})($v1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...