2012-07-09 45 views
0

我有一个PHP代码它显示从AZ按钮:添加和删除类工作不正常

<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'); 

UPDATE:

这里是一个DEMO所以你可以看到发生了什么,皮斯遵循以使用演示以下步骤:

  • 步骤1:在左侧会看到一个绿色加号按钮,点击此按钮上的 ,将出现一个模态窗口。
  • 步骤2:在模态窗口的搜索栏中,您会看到一个搜索栏 ,输入“AAA”并提交。
  • 第3步:您会看到一堆结果显示为您搜索。在 的第一行中,您将看到一个“答案”列,该列在该第一行中的 列下面声明“B”。点击“添加”按钮添加 行。
  • 第4步:现在您会看到右侧的按钮“B”突出显示为 。

这是在此刻很好,但现在的问题来了:

  • 第5步:在该行中再次单击绿色加号按钮,并执行 相同的搜索。
  • 第6步:这次添加“答案”为“A C”的第二行。现在您可以看到 按钮A和C突出显示,但仍然突出显示按钮B ,应将其关闭。

所以这是我的问题,在这个例子中为什么不按钮“B”关闭,因为它现在不是答案?

+0

我不明白您提供的代码段中的最后两行。您将从选定的答案中删除该课程,然后为所选答案添加off类,然后将on类添加到所有这些答案,并将off添加到不是所选答案的答案。这意味着选择的答案既有上课也有下课,而其他人都有下课。我希望它会与你所看到的相反,取决于CSS当然。 – 2012-07-09 19:18:08

+0

如果你可以提供一个更好的jsfiddle,但它看起来像你没有实际删除类“answerBtnsOff” – 2012-07-09 19:18:17

+0

@KevinB我试图说删除所有的类,并添加所有关闭的类到所有按钮,然后添加到类只有选中的按钮和关闭类别到其他按钮。所以我们可以说有3个按钮,A B C和B按钮被选中,那么它应该是按钮A是关闭类,按钮B在类上,按钮C关闭类。然后,如果我想更改答案,那么所有按钮都会变成课外,然后只将类添加到所选按钮中 – user1490145 2012-07-09 19:45:29

回答

1

而不是删除answers变量的类,我认为你需要从包含类answerBtnsOn的所有项目中删除类。

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

首先这样做,因为它会删除该类的所有实例,然后将该类添加到需要它的答案中。

您也可以参考jQuery manual for .toggleClass()了解如何改进您已有的内容。

+0

这对所有项目都适用,但是我怎么才能做到这一点,因为我只需要按钮在这个变量内能够被关闭。我尝试了'$(answers).find('。answerBtnsOn')。removeClass('answerBtnsOn')。addClass('answerBtnsOff');'但是这不起作用 – user1490145 2012-07-09 19:41:16

+0

我不明白你在做什么''答案'变量,但我认为你要做的是这样的:'$('.answers.answerBtnsOn').removeClass('answerBtnsOn').addClass('answerBtnsOff');' – Quantastical 2012-07-09 19:45:11

+0

我希望它分配它的原因回答变量是因为我有2个变量,它们是这2个:'var answers ='#answer'+ btn; var answersrow ='#answer'+ btn +'Row';'现在这两个变量都在按钮中使用'.answerBtnOn'和'.answerBtnOff'。我只希望answer变量中的按钮可以打开和关闭,并且不会影响answerrows变量中的按钮,这就是为什么我要分配给变量的原因。您的代码在评论中只会关闭答案变量中的按钮,或者它会关闭所有包含'.answerBtnOn'的按钮吗? – user1490145 2012-07-09 19:54:39