javascript - 为什么在元素上调用 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
,但没有效果。
解决方案
推荐阅读
- kubernetes - 如何将 volumeClaimTemplates 提取到单独的 PersistentVolumeClaim yaml 文件中?
- powershell - Powershell检查任何SD \ CF卡(可能是多个),然后将JPG和CR2文件复制到不同的目录
- javascript - 如何使用带有后备的`preload`
- angular - 当我尝试使用 rxjs 下载一些图像时超出了最大调用堆栈大小
- google-maps - 使用 Kotlin 协程为 Google MapOverlays 生成位图
- xaml - 如何在 (Uno 2.4) 中使用 Microsoft.UI.Xaml.Controls 资源
- php - 使用带有 5000 条记录的 DomPDF 生成 PDF 时出错
- php - 在 PHP 中使用 DOMDocument 获取 href 值
- c++ - 接收任何可迭代的容器
- mongodb - 将日期字符串 (YYYY-MM-DD) 转换为日期时间对象 pymongo