我有几个复选框,或者,我应该说几个bootstrap toggles:
<input id="master-toggle" type="checkbox" data-toggle="toggle">
<input type="checkbox" class="slave-toggle" data-toggle="toggle">
<input type="checkbox" class="slave-toggle" data-toggle="toggle">
我尝试做的是在切换slave-toggle
时切换每master-toggle
个$('#master-toggle').change(() => {
if($(this).prop('checked')) {
$('.slave-toggle').each(() => {
$(this).prop('checked', true).change();
});
} else {
$('.slave-toggle').each(() => {
$(this).prop('checked', false).change();
});
}
});
。为此,我编写了以下代码:
master-toggle
因此,当切换slave-toggle
时,函数执行,检查&#34;检查&#34;的值。属性。如果&#34;复选框&#34;是&#34;检查&#34;,然后它迭代master-toggle
类的所有元素,并设置他们的&#34;检查&#34;财产到真。 $(this).prop('checked')
是&#34;未选中&#34;时的情况相同。正确?
嗯,问题是,我遇到了两个问题。首先,if
语句中的undefined
表达式始终计算为$(this).prop('checked', true).change()
。其次,即使我强制使用此值,执行each
函数内的slave-toggle
也不会更改<a asp-action="DownloadFile" asp-route-id="@Model.ID">@Html.DisplayFor(model => model.BlobName)</a>
Generated HTML link: http://localhost:50325/DebitMemos/DownloadFile/76
的状态。是什么赋予了?我做错了什么?
非常感谢任何帮助。这是jsfiddle链接。
答案 0 :(得分:2)
您遇到的问题与您使用箭头功能有关。
() => {}
箭头功能不更改其上下文中this
的内容。这是他们的特色之一。要按照您的预期引用this
,请使用普通函数。否则,change事件上的e.target
应该是已更改的元素,each
方法应该传入您可以引用的参数index, element
。