1

私は学生のための評価システムに取り組んでいます。先生がクリックしたときに生徒の成績を変更したい。そのように切り替える2つの「グレード」画像があります:「A」、「B」をクリックした後...など。次のように、このタスクを達成する関数を使用します。

  function ChangeClass(object) 
          {

            var objectClass = $(object).attr('class');


        if (objectClass == 'zero') {

            $(object).removeClass('zero');
            $(object).addClass('one');

        }
        else if (objectClass == 'one') 
        {

            $(object).removeClass('one');
            $(object).addClass('two');
        }
        else if (objectClass == 'two') {
            $(object).removeClass('two');
            $(object).addClass('zero');
        }
    }

しかし、私はこの解決策が好きではありません.Jqueryにはもっと簡単なものがあるかもしれませんし、ボタンの形を変えたり、画像を切り替えたりするものもあります. アイデアがあれば、共有してください =)

4

2 に答える 2

4

これを試して:

var classes = ["zero", "one", "two"],
    i = classes.indexOf(object.className);
object.className = classes[(i + 1) % classes.length];

jQuery は必要ありませんがindexOf、配列は IE8 以前ではサポートされておらず、エミュレートする必要があることに注意してください。

objectこれは有効な DOM 要素であると想定しています。

于 2012-05-21T13:27:51.910 に答える
1

すべてのブラウザーで動作する jquery を使用する場合は、次のように使用できます。

       var max = 3; //total button or button class
       function ChangeClass(object){
                              var i = $(object).split('_')[1]; //this will explode 1 from className_1
                              var a = "className_" + i; // instead of zero, one, two use className_1, className_2, className_3
                              var b = (i+1) % max;
                              b = "className_" + b;
                              var x = "." + a;
                              $(x).click(function(){  
                                   $(this).removeClass(a).addClass(b);
                                });  
                              }

このソリューションは、0、1、2 の 3 つのボタンだけでなく、任意の数のボタンに使用できます。これが役立つことを願っています!

于 2012-05-21T13:57:50.070 に答える