【发布时间】:2018-02-15 17:36:16
【问题描述】:
我创建了一个切换开关复选框并应用了以下逻辑:
1] 如果用户点击切换开关class="os_section-slider",脚本将检查是否检查了包含元素名称的input。
1-A] 如果元素被选中,则将其更改为未选中并将该元素添加到名为os_tagsToRemove的数组中
1-B] 如果元素未选中,则将其更改为选中并将该元素添加到名为 os_tagsToAdd 的数组中
HTML
<span class="os_section-name">first</span>
<input type="checkbox" class="os_section-check" id="first" checked="checked">
<label class="os_section-slider" for="first"></label>
<div class="line-space-between"></div>
<span class="os_section-name">second</span>
<input type="checkbox" class="os_section-check" id="second">
<label class="os_section-slider" for="second"></label>
JS
$(".os_section-slider").click(function() {
if($(this).prev().is(":checked")) { //if checked
$(this).prev().attr("checked", false);
var os_tagName = $(this).prev().attr("id").toString();
os_tagsToRemove.push(os_tagName);
os_tagsToAdd.splice($.inArray(os_tagName, os_tagsToAdd),1);
} else { //if unchecked
$(this).prev().attr("checked", true);
var os_tagName = $(this).prev().attr("id").toString();
os_tagsToAdd.push(os_tagName);
os_tagsToRemove.splice($.inArray(os_tagName, os_tagsToRemove),1);
}
});
我的问题是,当我的页面重新加载并且我的切换开关出现在模式框中并且我尝试单击切换器按钮时,我必须单击 2 次,直到添加/删除选中的属性。
第一次单击始终只将值推入数组或将其从数组中删除,但不适用于$(this).prev().attr("checked", true); 或$(this).prev().attr("checked", false);。
但在第二次点击每个切换器按钮后,从那一刻起一切正常。
【问题讨论】:
-
我不明白你如何点击你的空标签...我不明白你为什么在标签上而不是复选框上附加点击事件。解释一下。
-
@LouysPatriceBessette 我需要我的脚本以更改页面源代码的方式更改每个元素的选中属性。当您有一个默认复选框时,如果您选中/取消选中元素的输入,它不会将
checked="checked"硬编码到页面的源代码中。 -
哈...好吧,这是关于默认检查...等一下。
标签: javascript jquery checkbox togglebutton