Почему вызов setClass для элемента не вызывает перерисовку элемента? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть следующая разметка для элемента привязки, затем я установил его class с этим кодом:

function checkTechSubmissionDownload() {
    if ($("#ErrorMessage").val()) {
        $("#FinalizeTender .validation-summary-errors").removeClass("hidden");
        $("#techSubDownloadLink").addClass("disabled");
    }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
  <div class="col-sm-12">
    <div class="form-group">
      <a id="downloadTechSubLink" href="@Url.Action("TenderPricingTemplateDownload", new { projectId = Model.ProjectId, isClosingDateMissing = !string.IsNullOrWhiteSpace(Model.ErrorMessage) })" class="btn btn-default" onclick="checkTechSubmissionDownload(); return false;">Generate Technical Submission Spreadsheet</a>
    </div>
  </div>
</div>

Где $("#ErrorMessage").val() соответствует истине, поэтому другой код выполняется. Моя проблема в том, что, хотя мой код и добавляет элемент disabled к элементу, но он изначально выглядит так, как будто без класса. Элемент, о котором идет речь, $("#downloadTechSubLink") выглядит как будто без класса disabled, пока я не нажму на него или где-нибудь в его родительском div.

enter image description here

Самым верхним элементом на изображении выше является не вход, а мой якорь (в стиле disabled), который «невидим».

Я попытался установить тайм-аут и вызвать $("#downloadTechSubLink").parent().click() безрезультатно, только когда я вручную нажимаю на родителя или якорь, он появляется снова.

Кажется, что добавление класса к элементу не вызывает перерисовки DOM или чего-то еще. Я даже пытался вызвать redraw() для элемента после добавления класса disabled, но безрезультатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...