Javascript 循环jQuery中的复选框列表以匹配重复的类
我试图确定是否有人选中了同一类的两个复选框 HTML在这里:Javascript 循环jQuery中的复选框列表以匹配重复的类,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我试图确定是否有人选中了同一类的两个复选框 HTML在这里: <fieldset class="activities"> <legend>Register for Activities</legend> <label> <input type="checkbox" name="all"> Main Conference — $200 </label> <label class="tues_mor
<fieldset class="activities">
<legend>Register for Activities</legend>
<label>
<input type="checkbox" name="all"> Main Conference — $200
</label>
<label class="tues_morn">
<input type="checkbox" name="js-frameworks"> JavaScript Frameworks Workshop — Tuesday 9am-12pm, $100
</label>
<label class="tues_aft">
<input type="checkbox" name="js-libs"> JavaScript Libraries Workshop — Tuesday 1pm-4pm, $100
</label>
<label class="tues_morn">
<input type="checkbox" name="express"> Express Workshop — Tuesday 9am-12pm, $100
</label>
<label class="tues_aft">
<input type="checkbox" name="node"> Node.js Workshop — Tuesday 1pm-4pm, $100
</label>
<label>
<input type="checkbox" name="build-tools"> Build tools Workshop — Wednesday 9am-12pm, $100
</label>
<label>
<input type="checkbox" name="npm"> npm Workshop — Wednesday 1pm-4pm, $100
</label>
</fieldset>
首先,您应该将class=“tues_time”移动到输入,而不是标签 一旦你做到了这一点,这将为你工作
// Get the inputs, rather than the labels
var checkBoxes = $('.activities > label > input');
checkBoxes.change(function() {
var tuesMorn = checkBoxes.filter('.tues_morn:checkbox:checked').length;
var tuesAft = checkBoxes.filter('.tues_aft:checkbox:checked').length;
if (tuesMorn > 1) {
alert("You Signed Up For Too Many Morning Classes");
} else if (tuesAft > 1) {
alert ("You Signed Up For Too Many Aft Classe")
}
});
与其将它们添加到更高范围的变量中,不如在每次发生更改时对它们进行计数。它更简单,易于阅读和维护,这很好!:)
首先,您应该将class=“tues_time”移动到输入上,而不是移动到标签上 一旦你做到了这一点,这将为你工作
// Get the inputs, rather than the labels
var checkBoxes = $('.activities > label > input');
checkBoxes.change(function() {
var tuesMorn = checkBoxes.filter('.tues_morn:checkbox:checked').length;
var tuesAft = checkBoxes.filter('.tues_aft:checkbox:checked').length;
if (tuesMorn > 1) {
alert("You Signed Up For Too Many Morning Classes");
} else if (tuesAft > 1) {
alert ("You Signed Up For Too Many Aft Classe")
}
});
与其将它们添加到更高范围的变量中,不如在每次发生更改时对它们进行计数。它更简单,易于阅读和维护,这很好!:)
这里是一个工作示例,您可能需要根据自己的具体需求对其进行调整
var$activities=$('.activities输入[type=“checkbox”]”);
//活动
var tuesMorn=0;
var tuesAft=0;
$activities.change(函数(){
var activityClass=$(this).closest('label').attr(“class”);
var isChecked=此项已检查;
如果(activityClass===“周二上午”){
tuesMorn=isChecked?tuesMorn+1:tuesMorn-1;
如果(tuesMorn>1){
警惕(“你早上报名的课太多了”);
}
}else if(activityClass==='tues_aft'){
tuesAft=isChecked?tuesAft+1:tuesAft-1;
如果(tuesAft>1){
警告(“你报名的船尾舱太多了”)
}
}
});代码>
。周二上午{
背景:橙色;
}
星期二船尾{
背景:浅蓝色;
}
登记参加活动
主要会议-200美元
JavaScript框架研讨会-周二上午9点至下午12点,100美元
JavaScript库研讨会-周二下午1点到4点,100美元
快速工作坊-星期二上午9点至下午12点,100美元
Node.js研讨会-周二下午1点至4点,100美元
建造工具研讨会-星期三上午9点至下午12点,100美元
npm研讨会-周三下午1点至4点,100美元
这是一个工作示例,您可能需要根据自己的具体需求对其进行调整
var$activities=$('.activities输入[type=“checkbox”]”);
//活动
var tuesMorn=0;
var tuesAft=0;
$activities.change(函数(){
var activityClass=$(this).closest('label').attr(“class”);
var isChecked=此项已检查;
如果(activityClass===“周二上午”){
tuesMorn=isChecked?tuesMorn+1:tuesMorn-1;
如果(tuesMorn>1){
警惕(“你早上报名的课太多了”);
}
}else if(activityClass==='tues_aft'){
tuesAft=isChecked?tuesAft+1:tuesAft-1;
如果(tuesAft>1){
警告(“你报名的船尾舱太多了”)
}
}
});代码>
。周二上午{
背景:橙色;
}
星期二船尾{
背景:浅蓝色;
}
登记参加活动
主要会议-200美元
JavaScript框架研讨会-周二上午9点至下午12点,100美元
JavaScript库研讨会-周二下午1点到4点,100美元
快速工作坊-星期二上午9点至下午12点,100美元
Node.js研讨会-周二下午1点至4点,100美元
建造工具研讨会-星期三上午9点至下午12点,100美元
npm研讨会-周三下午1点至4点,100美元
谢谢!你能帮我解释一下这句话吗:tuesMorn=isChecked?tuesMorn+1:tuesMorn-1;这一行使用的是三元运算符。这是这个的简写:if(isChecked){tuesMorn=tuesMorn+1;}else{tuesMorn=tuesMorn-1}
好的,谢谢!你的回答也很好——两个都很好。谢谢你,谢谢!你能帮我解释一下这句话吗:tuesMorn=isChecked?tuesMorn+1:tuesMorn-1;这一行使用的是三元运算符。这是这个的简写:if(isChecked){tuesMorn=tuesMorn+1;}else{tuesMorn=tuesMorn-1}
好的,谢谢!你的回答也很好——两个都很好。谢谢如果您认为您的问题已得到回答,请将其中一个标记为“已接受的答案”。(最好是我的xD)如果您认为您的问题已经得到了回答,请您将其中一个标记为“已接受的答案”。(最好是矿山xD)