Multiples复选框具有相同的.click功能

时间:2016-10-31 02:43:06

标签: javascript jquery checkbox

对于我缺乏知识的道歉,我确信这是一个简单的解决方案。

我的网页上有很多复选框。 选中复选框时,会将值1发送给变量。

参见示例:

   $('#teamwork, #goodcommunicator, #self-motivated, #computerskills,      #planning, #selfmanagement, #flexibleteamplayer, #timedeadlines').click(function()     { 
       var check = document.getElementById("teamwork, goodcommunicator,      planning, self-motivated, computerskills, selfmanagement, flexibleteamplayer, timedealines").checked
     if (check == true) {
     job1 += 1; 
     job2 += 1;
     job3 += 1;
     job4 += 1;
     job5 += 1;
     job6 += 1;
     job7 += 1;
     job8 += 1;
     workSkillsCheckboxCount += 1; 
     console.log(workSkillsCheckboxCount);
 }
    else if (check == false) {
     job1 -= 1; 
     job2 -= 1;
     job3 -= 1;
     job4 -= 1;
     job5 -= 1;
     job6 -= 1;
     job7 -= 1;
     job8 -= 1;
     workSkillsCheckboxCount -= 1; 
     console.log(workSkillsCheckboxCount);

 }
 }); 

许多复选框'函数加倍,我想写一个大函数,而不是一些函数。 下面的这个功能似乎不起作用。

  $('.group1').click(function(){ 
        var check = document.getElementsByClassName("group1").checked
    if (check == true) {
    job1 += 1; 
    job2 += 1;
    job3 += 1;
    job4 += 1;
    job5 += 1;
    job6 += 1;
    job7 += 1;
    job8 += 1;
    workSkillsCheckboxCount += 1; 
    console.log(workSkillsCheckboxCount);
}
    else if (check == false) {
    job1 -= 1; 
    job2 -= 1;
    job3 -= 1;
    job4 -= 1;
    job5 -= 1;
    job6 -= 1;
    job7 -= 1;
    job8 -= 1;
    workSkillsCheckboxCount -= 1; 
    console.log(workSkillsCheckboxCount);

}
});

我尝试给出一个类的相应复选框,然后编写了这个函数。但这似乎并没有将值发送到workSkillsCheckboxCount变量。

"Transactions": {
    ".write": "auth !== null",
    "$transactionAutoID": {
        "timeCreated": {
            ".write": "auth !== null && data.child('sender').val() === auth.uid || data.child('receiver').val() === auth.uid",
            ".read": "auth !== null && data.child('sender').val() === auth.uid || data.child('receiver').val() === auth.uid"
        }
    }
}

2 个答案:

答案 0 :(得分:0)

let randomRed:CGFloat = CGFloat(arc4random_uniform(256)) let randomGreen:CGFloat = CGFloat(arc4random_uniform(256)) let randomBlue:CGFloat = CGFloat(arc4random_uniform(256)) let myColor = UIColor(red: randomRed/255, green: randomGreen/255, blue: randomBlue/255, alpha: 1.0) 函数将单个ID作为参数,并返回具有该ID的(第一个)元素(如果未找到,则返回.getElementById())。您不能使用ID列表来调用它。

赋予元素一个公共类是识别它们的最佳方法,但null属性属于单个复选框,因此您不能在.checked的结果上使用它(它返回一个列表)。

您在评论中说,您正在尝试测试是否至少检查了一个项目。 jQuery的.is() method将:

  

根据选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true。

因此,如果您与:checked selector一起使用,则可以测试是否检查了.getElementsByClassName("group1")类的任何元素:

group1

请注意,如果您的$('.group1').click(function(){ if ($('.group1').is(':checked')) { job1 += 1; // etc. } else { // none are checked: job1 -= 1; // etc. } }); if分支都更新完全相同的变量集,唯一的区别是是添加还是减去else,那么您可以执行以下操作:

1

答案 1 :(得分:0)

这是一个简单的解决方案:

$(".check").on("click", function() {
  if ($(this).is(':checked')) {
    // do your checked activity here
    
    // if your further want to know which checkbox was checked recently then $(this).attr('name') will be handy
    console.log("Checkbox "+$(this).attr('name')+" checked: true");
  } else {
    // do your unchecked activity here
    
    // if your further want to know which checkbox was unchecked recently then $(this).attr('name') will be handy
    console.log("Checkbox "+$(this).attr('name')+" checked: false");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="check" name="c1" type="checkbox" />
<input class="check" name="c2" type="checkbox" />
<input class="check" name="c3" type="checkbox" />
<input class="check" name="c4" type="checkbox" />
<input class="check" name="c5" type="checkbox" />
<input class="check" name="c6" type="checkbox" />