关于复选框检查的困惑

时间:2013-11-20 10:29:21

标签: javascript jquery loops checkbox prop

我有大约100个课程,复选框有course-chkbox课,我使用以下代码:

//Make sure user has checked at least one course        
if ($('.course-chkbox:checked').length === 0) {
    alert('You have to have at least one course selected');
    return false;
}

这是正确的,因为我使用的是最新版本的jQuery吗?

有很多关于如何根据谷歌搜索来解决同样事情的建议...

     1. Usage of is("checked")
     2. Usage of prop()
     3. Looping through the elements involved and check each element if it's checked

什么解决方案最好?为什么?

1 个答案:

答案 0 :(得分:2)

考虑到性能方面,您的代码优于迭代。

  
      
  1. 使用is(“选中”)
  2.   
  3. prop()
  4. 的用法   

这2个案例必须经历 迭代 (循环检查是否已检查)。

$('.course-chkbox').is(':checked').length // returns undefined
$('.course-chkbox').prop('checked').length //returns undefined

如果您尝试使用迭代,那么代码可能看起来像(这可以减少但是一旦我看到这篇帖子就会出现在我脑海中)

var tot;
$('.course-chkbox').each(function() {
  if ($(this).is(':checked')) { //or if($(this).prop('checked')) {
    tot = tot + 1;
  }
});

if (tot == 100) {
  alert('You have to have at least one course selected');
  return false;
}

所以使用你的代码是明智的。

if ($('.course-chkbox:checked').length) {
    alert('You have to have at least one course selected');
    return false;
}

我尝试为此测试用例创建benchmark(您的代码获胜),不确定代码的正确性。