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() の使い方

これらの 2 つのケースは、反復する必要があります(ループして、チェックされているかどうかを確認します)。

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

iterationを使用しようとすると、コードは次のようになります (これは減らすことができますが、この投稿を見たときに頭に浮かびました)

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 に答える