在单独的切换更改上切换多个复选框

时间:2018-03-05 23:31:56

标签: javascript jquery twitter-bootstrap-3

我有几个复选框,或者,我应该说几个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链接。

1 个答案:

答案 0 :(得分:2)

您遇到的问题与您使用箭头功能有关。

() => {}

箭头功能更改其上下文中this的内容。这是他们的特色之一。要按照您的预期引用this,请使用普通函数。否则,change事件上的e.target应该是已更改的元素,each方法应该传入您可以引用的参数index, element