我有一个PHP代码,它显示来自A-Z的按钮:
<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');
更新:
这是一个DEMO所以你可以看到发生了什么,请按照以下步骤使用演示:
现在这很好,但问题现在出现了:
这就是我的问题,在这个例子中为什么按钮“B”没有关闭,因为它现在不是答案?
答案 0 :(得分:1)
我认为您需要从包含类answers
的所有项中删除该类,而不是删除answerBtnsOn
变量的类。
$( '.answerBtnsOn' ).removeClass( 'answerBtnsOn' ).addClass( 'answerBtnsOff' );
首先执行此操作,因为它会删除该类的所有实例,然后将该类添加到需要它的答案中。
您可能还希望参考jQuery manual for .toggleClass()
,了解如何改善您已有的内容。