0

AZのボタンを表示するPHPコードがあります。

  <table id="optionAndAnswer" class="optionAndAnswer">
    <tr class="answer">
    <td>3. Answer</td>
    <td>
        <?php
            $a = range("A","Z");
        ?>

        <table id="answerSection">
            <tr>

        <?php
            $i = 1;
            foreach($a as $key => $val){
                if($i%7 == 1) echo"<tr><td>";
                echo"<input type=\"button\" onclick=\"btnclick(this);\" value=\"$val\" id=\"answer".$val."\" name=\"answer".$val."Name\" class=\"answerBtns answers answerBtnsOff\">";      
                if($i%7 == 0) echo"</td></tr>";
                $i++;
            }
        ?>

...

これで、これらのボタンは「.answerBtnsOn」と「.answerBtnsOff」を使用してオンとオフを切り替える必要があります

私が抱えている問題は、オンにする必要のあるボタンが強調表示されますが、他のボタンの強調表示が解除(オフ)されないことです。したがって、ボタンBが強調表示されていても、答えがAとCの場合は、ボタンAとCのみをオンにし、他のすべてのボタンをオフにする必要がありますが、ボタンBがAとCとともにオンのままであるため、これは発生しません。 。

だから私の質問は、どうすればオフにすべきボタンをオフにできるかということです。現時点では、正しいボタンはオンになっていますが、他のボタンはオフにされていません。

以下は現在のコードです:

var answers = $.map(btn.split(''),function(chr){   return "#answer"+chr;  }).join(', ');

        $(answers).removeClass('answerBtnsOn').addClass('answerBtnsOff');
        $(answers).addClass("answerBtnsOn").siblings().addClass('answerBtnsOff');

アップデート:

これがデモです。何が起こっているかを確認できます。デモを使用するには、以下の手順に従ってください。

  • ステップ1:左側に緑色のプラスボタンが表示されます。このボタンをクリックすると、モーダルウィンドウが表示されます。
  • ステップ2:モーダルウィンドウの検索バーに検索バーが表示されたら、「AAA」と入力して送信します。
  • ステップ3:検索すると多数の結果が表示されます。最初の行には、その最初の行内のその列の下に「B」と表示されている「Answer」列が表示されます。[追加]ボタンをクリックして、その行を追加します。
  • ステップ4:右側に、ボタン「B」が強調表示されます。

これは現時点では問題ありませんが、問題が発生しています。

  • ステップ5:行の緑色のプラスボタンをもう一度クリックして、同じ検索を実行します。
  • ステップ6:今回は、「Answer」が「AC」である2番目の行を追加します。ボタンAとCが強調表示されているのに、ボタンBはまだ強調表示されているので、オフにする必要があります。

これが私の問題です。この例では、「B」ボタンがオフにならないのはなぜですか。

4

1 に答える 1

1

変数のクラスを削除する代わりに、クラスanswersを含むすべてのアイテムからクラスを削除する必要があると思いますanswerBtnsOn

$( '.answerBtnsOn' ).removeClass( 'answerBtnsOn' ).addClass( 'answerBtnsOff' );

そのクラスのすべてのインスタンスを削除するため、最初にこれを実行してから、それを必要とする回答にクラスを追加します。

すでに持っているものを改善する方法については、 jQueryのマニュアル.toggleClass()を参照することもできます。

于 2012-07-09T19:17:56.823 に答える