jQuery не будет обновлять счетчик на кнопке

#javascript #jquery

#javascript #jquery

Вопрос:

Я нашел пример того, как добавить счетчик к кнопке во время выполнения запроса в фоновом режиме.

 $(function(){

var spinnerHTML = "<span class='spinner'><i class='fa fa-refresh fa-spin'></i></span>",
    spinnerObjects = $(".has-spinner");

spinnerObjects.filter("[data-spinner=left]").prepend(spinnerHTML   "amp;nbsp;")
spinnerObjects.filter("[data-spinner=right]").append("amp;nbsp;"   spinnerHTML)
spinnerObjects.click(function() {
    $(this).toggleClass('active');
});
});
  

Я удалил части добавления и предпослания, поскольку они были не тем, что мне было нужно, и переписал их, чтобы они выглядели следующим образом.

 function toggleSpinner(active) {
alert('here!');
spinnerObjects = $(".has-spinner");
spinnerObjects.each(function () {
    if (active) {
        alert('Got here!');
        $(this).add(' active');
    }
    else {
        alert('Also got here!');
        $(this).remove('active');
    }
});
}
  

Я вызываю его из своего запроса на обновление следующим образом.

 function refreshView(url, divName) {
//alert('Got here!');
toggleSpinner(true);
$.ajax({
    type: 'POST',
    url: url,
    success: function (response) {
        if (response.success) {
            //console.log(response.html);
            $(divName).html(response.html);
            // Hide the "busy" gif:
            toggleSpinner(false);
            $.notify(response.message, "success");
        }
        else {
            // Hide the "busy" gif:
            toggleSpinner(false);
            $.notify(response.message, "error");
        }
    },
    error: function (jqxhr, status, exception) {
        alert('jQueryAjaxPost - Exception:', exception);
    }
});
}
  

Вот HTML-код кнопки:

     <button class="btn btn-primary has-spinner btn-primary" type="button" onclick="refreshView('@Url.Action("ViewEmployeePayItemDetail", "Employee", new { params omitted })', '#Detail_@Model.EmpId')">
         <span class='spinner'><i class='fa fa-refresh fa-spin'></i></span>
            @Model.EmpNo
    </button>
  

И связанный с ним CSS:

 .spinner {
    display: inline-block;
    opacity: 0;
    max-width: 0;
    -webkit-transition: opacity 0.25s, max-width 0.45s;
    -moz-transition: opacity 0.25s, max-width 0.45s;
    -o-transition: opacity 0.25s, max-width 0.45s;
    transition: opacity 0.25s, max-width 0.45s; /* Duration fixed since we 
    animate additional hidden width */
}

.has-spinner.active {
    cursor: progress;
}

.has-spinner.active .spinner {
    opacity: 1;
    max-width: 50px; /* More than it will ever come, notice that this affects on animation duration */
}
  

Я добираюсь до кода toggleSpinner, и оповещения запускаются / включаются, как ожидалось (один раз на кнопку при каждом запуске), но блесны активируются не так, как должны.

Я сильно подозреваю, что

Комментарии:

1. $(this).add(‘active’); не имеет смысла …. вы имели в виду addClass('active') adn removeClass….

2. Это было именно так!!! Большое вам спасибо! Я подумал, что это что-то маленькое, чего мне не хватало из-за моего незнания Jscript. Еще раз спасибо!