Как получить Jquery синхронный или функцию обратного вызова перед следующей функцией или кодом - PullRequest
0 голосов
/ 17 октября 2018

Мне нужна помощь с этим, пожалуйста.Мне нужна одна функция JQuery, чтобы закончить до того, как будет выполнена следующая.Это только на стороне клиента, поэтому нет необходимости связываться с сервером, т.е. не требуется POST, PUT или GET.Кажется, что действия, выполняемые над некоторыми элементами DOM, доступны и видимы только после завершения функции события Click.Мне нужно иметь доступ к этим изменениям на некоторых элементах до завершения функции события.Я попробовал несколько предложенных решений для похожих вопросов, но безуспешно, заставив это работать.

Вторая функция (SetParentsTriStateCheckBoxes) зависит от первой, чтобы установитьфлажки, но, кажется, он устанавливает только флажки после , он вышел из функции «.subtree-checkbox» .click), поэтому у 2-й функции нет точных состояний sheckbox, с которыми можноработа.

$(function ()
  {$(".subtree-checkbox").click(function (e)
    {
        var id = $(this).find("input[type=checkbox]").attr("id");
        e.stopPropagation();        
        var SpanParent  = $(this).parents(".accordion-heading").attr("data-target");

        //Also tried the commented out way / line as well.

        //setCheckboxes($(this), SpanParent, callback).then(SetParentsTriStateCheckBoxes($(this), SpanParent, id));
        setCheckboxes($(this), SpanParent, function () { return }).then(SetParentsTriStateCheckBoxes($(this), SpanParent, id));

    });

    var setCheckboxes = function ($this, SpanParent, callback)
    {
        var defer = $.Deferred();

        if ($this.hasClass('checked'))
        {
            //set the checkboxes classes                            
        }

        setTimeout(function ()
        {
            defer.resolve();
        }, 5000);

        return defer;
        callback();
    }

    var SetParentsTriStateCheckBoxes = function ($this, SpanParent,id)
    {
        var defer = $.Deferred();
        //Handles the ancestors (parents) tri-state

        setTimeout(function ()
        {
            defer.resolve();
        }, 5000);

        return defer;
    }
...