2

以下のコードでたくさんの文字ボタンを手に入れました:

<?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++;
    }
?>
    </tr>
</table>

これで、以下のコードで回答ボタンをオンにできます。

$('#answer'+btn).addClass("answerBtnsOn");

しかし、私がやりたいのは、いくつかの回答ボタンをオンにし、他の回答ボタンをオフにできるようにすることです。

たとえば、回答がAの場合、上記のコード行と同じようにボタン「A」をオンにしますが、他のすべての文字ボタンをオフにします。他の文字ボタンをオフにするにはどうすればよいですか?

ここのコードは文字ボタンをオフにしますaddClass("answerBtnsOff");

アップデート:

私も少し問題があります。「回答」がAの場合、文字ボタン「A」がオンになりますが、回答が「B D」の場合、文字ボタン「B」と「D」がオンになりますが、代わりにt任意のボタンをオンにします。なぜこれなのか誰か知っていますか?

4

4 に答える 4

2

一般的なパターンは、すべてのボタンをオフ状態にリセットしてから、必要なボタンのみを有効にすることです。

// reset all answer buttons to the off state
// remove any on/off classes
$("#answerSection").find("button").removeClass("answerBtnsOff").removeClass("answerBtnsOn");

// set all buttons to off
$("#answerSection").find("button").addClass("answerBtnsOff");

// now turn on only the buttons that are valid
$("#answerA").removeClass("answerBtnsOff").addClass("answerBtnsOn");
$("#answerB").removeClass("answerBtnsOff").addClass("answerBtnsOn");
于 2012-07-08T01:32:40.110 に答える
1

あなたの更新に関して、私があなたを正しく理解しているなら、あなたは一連のスペースで区切られた答えを持っています。その場合、このコードはそれを処理する必要があります。

var answers = btn.split(" ");
var answer_selector = '#answer'+answers.join(",#answer");
$(".answerBtns").removeClass("answerBtnsOn"); 
$(answer_selector).addClass("answerBtnsOn");
于 2012-10-07T12:16:19.340 に答える
0

ええと、これは単純すぎるかもしれませんが、最初にそれらをすべてオフにしてから、選択したものをオンに戻すことができますか?

編集:

これを試して:

$(".answers").addClass("answerBtnsOff");
$('#answer'+btn).addClass("answerBtnsOn");
于 2012-07-08T01:02:44.293 に答える
0

次のセレクターの組み合わせを試してください。

$('#answer'+btn1+', #answer'+btn2).addClass("answerBtnsOn").removeClass("answerBtnsOff");
$('[id^="answer"]').not('#answer'+btn1+', #answer'+btn2).addClass("answerBtnsOff").removeClass("answerBtnsOff");
于 2012-07-08T01:05:02.407 に答える