我有一个 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++;
}
?>
...
我要做的是在 jquery 中为上述代码创建一个模板,这样如果用户想要将这些按钮添加到一个块中,那么 jquery 可以用于将这些按钮添加到一个块中,就像模板一样。
下面是jquery代码:
var $this, i=0, $row, $cell;
$('#optionAndAnswer .answers').each(function() {
$this = $(this);
if(i%7 == 0) {
$row = $("<tr/>").appendTo($answer);
$cell = $("<td/>").appendTo($row);
}
var $newBtn = $("<input class='answerBtnsRow answers' type='button' style='display:%s;' onclick='btnclick(this);' />".replace('%s',$this.is(':visible')?'inline-block':'none')).attr('name', $this.attr('name')).attr('value', $this.val()).attr('class', $this.attr('class')).attr('id', $this.attr('id')+'Row');
$newBtn.appendTo($cell);
i++;
});
现在这工作正常,但我有一个问题。我希望用户能够"answerBtnsOn"
根据字母的内容突出显示和取消突出显示“answerBtnsOff”按钮。
例如,如果字母是“B”,则突出显示按钮 B 并取消突出显示其他按钮。如果有多个字母,例如 AC,则突出显示按钮 A 和 C,并取消突出显示所有其他按钮。
我遇到的问题是它突出显示了应该突出显示的按钮,但它并没有取消突出显示其他按钮。因此,如果按钮 B 被突出显示,但现在字母是 A 和 C,它应该只突出显示按钮 A 和 C,而所有其他按钮都应该不突出显示,但这不会发生,因为按钮 B 仍然与 A 和 C 一起突出显示。
所以我的问题是,在下面的代码中,为什么不取消突出显示按钮?
var answersrow = $.map(btn.split(''),function(chr){ return "#answer"+chr+"Row"; }).join(', ');
$('.answerBtnsRow').removeClass('answerBtnsOff').removeClass('answerBtnsOn');
$(answersrow).addClass("answerBtnsOn").siblings().addClass('answerBtnsOff');
更新:
我在这个应用程序中创建了一个演示。请打开网址并按照以下步骤操作,以便能够使用演示
- 第 1 步:当您打开应用程序时,立即单击“添加问题”按钮,这将在下方添加一个表格行,显示与上述相同的控件。
- 步骤2:在刚刚添加的行中,点击“Open Grid”链接并选择按钮“7”,这将从下面的“AG”中输出7个按钮。
- 第 3 步:现在在左侧的行中,您将看到一个绿色的加号按钮,单击此按钮,将出现一个模式窗口。
- 第 4 步:在模式窗口的搜索栏中,您将看到一个搜索栏,输入“AAA”并提交。
- 第 5 步:您将看到一堆结果供您搜索。在第一行中,您将看到一个“Answer”列,该列在该第一行中的该列下显示“B”。单击“添加”按钮以添加该行。
- 第 6 步:您现在将看到在您的行中,按钮“B”被突出显示。
目前这很好,但现在出现了问题:
- 第 7 步:再次单击该行中的绿色加号按钮并执行相同的搜索。
- 第 8 步:这次添加“Answer”为“A C”的第二行。现在您可以看到按钮 A 和 C 突出显示,但按钮 B 仍然突出显示,它应该被关闭。
所以这就是我的问题,在这个例子中,为什么按钮“B”没有关闭,因为它现在不是答案?