0
if(varName1 <= 1 && varName1 > 0)
{
$('#id1').addClass('ClassName');
}

if(varName2 <= 2 && varName2 > 1)
{
$('#id1').addClass('ClassName');
$('#id2').addClass('ClassName');
}


if(varName3 <= 3 && varName2 > 2)
{
$('#id1').addClass('ClassName');
$('#id2').addClass('ClassName');
$('#id3').addClass('ClassName');
}

したがって、基本的に、より少ないifステートメント(同じパターンで合計8つ)でこれを行うより良い方法があるかどうか疑問に思っています。

4

5 に答える 5

3
for (x = 1; x <= 3; x++) {
   if(varName[x] <= x && varName[x] > (x-1)) {
      $('#id[x]').addClass('ClassName');
   }
}
于 2012-05-17T02:12:46.860 に答える
2

セレクターを 1 つのステートメントに結合する

if(varName1 <= 1 && varName1 > 0)
{
  $('#id1').addClass('ClassName');
}
if(varName2 <= 2 && varName2 > 1)
{
  $('#id1,#id2').addClass('ClassName');
}
if(varName3 <= 3 && varName2 > 2)
{
  $('#id1,#id2,#id3').addClass('ClassName');
}
于 2012-05-17T02:09:13.313 に答える
0

タスクを達成する代替の最良の方法は、if-else-if を switch ステートメントに置き換えることです。コードサイズが縮小されることを除いて大きな違いはありませんが、3進数も使用できます

switch( var ){ ケース 1: $('#id1').addClass('ClassName'); 壊す;

case 2:
    $('#id1,#id2').addClass('ClassName');
    break;

case 3:
      $('#id1,#id2,#id3').addClass('ClassName');
      break;

default:
     break;

}

switch ケースですべてのユース ケースを実行する場合は、break ステートメントを省略する必要があることに注意してください。ここで、このコード スニペットは特定のユース ケースのみを実行し、一致しないケースに遭遇するとブレークしてループから抜け出します。

于 2012-05-17T02:42:23.390 に答える
0
var i = 0, $id;
while(i <= 3) {
    if(eval("varName" + i) <= i && eval("varName" + i) > (i - 1)) {
        $id = $("#id" + i).addClass("className");
    }
}

//But I recommend something like below (if that is your purpose):
$("div").each(function(_i, _self) {
    var $self = $(_self);
    if($self.hasClass("className")) {
        $self.addClass("className");
    }
});
于 2012-05-17T03:29:27.417 に答える