【发布时间】:2021-06-14 10:58:39
【问题描述】:
我有一个嵌入在 div 中的复选框,如以下 HTML 所示:
<div>
<div class="ms-Checkbox is-checked is-enabled root-751">
<input type="checkbox" data-automation-id="ProductSkuId_18181a46-0d4e-45cd-891e-60aabd171b4e" class="input-521" id="checkbox-886" aria-label="Office 365 E1" aria-describedby="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e" aria-checked="true" value="18181a46-0d4e-45cd-891e-60aabd171b4e" checked="">
<label class="ms-Checkbox-label label-738" for="checkbox-886">
<div class="ms-Checkbox-checkbox checkbox-752">
<i data-icon-name="CheckMark" aria-hidden="true" class="ms-Checkbox-checkmark checkmark-754"></i>
</div>
<div class="css-742">
<div class="css-743" data-automation-id="LicenseText_Office 365 E1">Office 365 E1</div>
</div>
</label>
</div>
<div class="css-736" id="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e" data-automation-id="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e">
<div class="css-735">12 of 591 licenses available</div>
</div>
</div>
从上面我们可以看出,有一个“复选框”类型的输入,如果我使用以下 javascript:
$("#checkbox-886").prop('checked', false);
该框仍处于选中状态。我还尝试了以下方法:
document.getElementById("checkbox-886").removeAttribute("checked")
尽管我看到选中的属性已从输入中删除,但它仍然没有从复选框中删除复选标记。
我猜测复选框周围的 div 也有责任,因为我看到了“is-checked”属性,并且我不确定如何编写 javascript 来在通过 javascript 更改子元素时强制更改父元素.任何帮助或见解将不胜感激。提前致谢。
【问题讨论】:
-
你好,你在用插件吗?
-
您的代码,提供工作正常。 jsfiddle.net/5uo48206 很可能您在复选框(第 3 方插件)周围有一些其他“包装器”,它用自己的表示替换复选框(可能是图像,可能是:
<i data-icon-class="ms-Checkbox-checkmark checkmark-754">)和一些 css 来隐藏实际的复选框.您需要使用插件的 API 来更改状态。或者删除插件。或者至少,告诉我们它是什么!
标签: javascript jquery