0

我有大约 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

什么解决方案是最好的,为什么?

4

1 回答 1

2

从性能角度考虑,您的代码比迭代好。

  1. is("checked") 的用法
  2. prop() 的使用

这两种情况必须经过迭代(循环检查是否被检查)。

$('.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;
}

我试图为这个测试用例创建基准(你的代码获胜),不确定代码的正确性。

于 2013-11-20T13:01:03.737 回答