我在下面有一个 if else 语句,它根据另一个按钮是打开还是关闭来打开和关闭按钮。这涉及 2 个按钮,“是”或“否”。
function btnclick(btn)
{
var context = $(btn).parents('#optionAndAnswer');
if (context.length == 0) {
context = $(btn).parents('tr');
}
var $btn = $(btn);
var id = btn.id;
var $otherYNBtn = id === "answerYes" ? $("#answerNo") : $("#answerYes");
$(btn).toggleClass("answerBtnsOff");
$(btn).toggleClass("answerBtnsOn");
if ($("#answerYes", context).hasClass('answerBtnsOn')) {
$otherYNBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
}
else if ($("#answerNo", context).hasClass('answerBtnsOn')) {
$otherYNBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
}
return false;
}
现在此代码适用于下面显示在顶部的这些按钮:
<table id="optionAndAnswer" class="optionAndAnswer">
...
<input class="answerBtns answers answerBtnsOff" name="answerYesName" id="answerYes" type="button" value="Yes" onclick="btnclick(this);"/>
<input class="answerBtns answers answerBtnsOff" name="answerNoName" id="answerNo" type="button" value="No" onclick="btnclick(this);"/>
现在我的情况是,它显然只适用于上面的按钮,但是用户可以通过将这些按钮附加到新行中来将它们添加到新行中。将这些按钮附加到新行中的代码如下:
var $this;
$('#optionAndAnswer .answers').each(function() {
$this = $(this);
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++;
});
上面的代码将顶部按钮的所有属性(名称、类、id)复制到一个新行中,唯一的区别是附加按钮的 id 在 id 的末尾包含字符串“Row”。
我的问题是,我想要做的是更改我的 if/else if 函数,以便它适用于所有 2 个按钮,无论它们是在顶部,还是在第 1 行或第 2 行等。
例如:
如果我在顶部控件上有“是”和“否”按钮,第 1 行有“是”和“否”按钮,第 2 行有“是”和“否”按钮,所有这些按钮都打开了“是”按钮。
如果我单击顶部控件中的“否”按钮,它应该打开“否”按钮并仅关闭顶部控件中的“是”按钮,它不应该对第 1 行或第 2 行有任何影响。
如果我单击第 1 行中的“否”按钮,它应该打开“否”按钮并仅关闭第 1 行中的“是”按钮,它不应该对第 2 行或顶部控制有任何影响。
如果我单击第 2 行中的“否”按钮,它应该打开“否”按钮并仅关闭第 2 行中的“是”按钮,它不应该对第 1 行或顶部控制有任何影响。
如何实现这一点,目前我的 if else 语句仅适用于顶部控件上的按钮(因为它的 id),但不适用于任何行。