首页 > 解决方案 > 为什么在元素上调用 setClass 不会导致元素被重绘?

问题描述

我有一个锚元素的以下标记,然后我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>

Where$("#ErrorMessage").val()评估为真,因此其他代码确实执行。我的问题是,虽然我的代码确实将disabled类添加到元素中,但它最初看起来好像没有类。有问题的元素$("#downloadTechSubLink")看起来好像没有disabled类,直到我单击它或其父 div 中的某个位置。

在此处输入图像描述

上图中最顶部的元素不是输入,而是我disabled的“不可见”锚(样式为 )。

我尝试设置超时并调用$("#downloadTechSubLink").parent().click()无效,只有当我手动单击父级或锚点时,它才会重新出现。

似乎向元素添加一个类不会导致 DOM 重绘之类的。我什至尝试redraw()在添加类后调用元素disabled,但没有效果。

标签: javascriptjqueryhtml

解决方案


推荐阅读