我有一个jsfiddle here,您可以使用它来查看我的应用程序的基本演示以及我遇到的问题。
当您打开小提琴时,请按照以下步骤操作:
所以我的问题是,任何人都可以修改演示,以便当用户点击附加行中的“打开网格”链接时,他们可以在相应的行中显示相应的答案按钮吗?
我认为问题可能在这段代码中,但我不确定:
var count = 0;
var plusbutton_clicked;
var gQuestionIndex = 0;
function insertQuestion(form) {
var context = $('#optionAndAnswer');
var currenttotal = context.find('.answerBtnsOn').length;
var $tbody = $('#qandatbl > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'>");
var $td = $("<td class='extratd'>");
var $options = $("<div class='option'>1. Option Type:<br/></div>");
var $answer = $("<div class='answer'>3. Answer:<br/></div>");
gQuestionIndex++;
$('.gridTxt', context).each(function() {
var $this = $(this);
var $optionsText = $("<input type='text' class='gridTxtRow maxRow' readonly='readonly' />").attr('name', $this.attr('name') + "[]").attr('value', $this.val()).appendTo($options).after("<span href='#' class='showGrid'>[Open Grid]</span>");
$questionType = $this.val();
});
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, " + gQuestionIndex + ");' />").replace('%s', $this.is(':visible') ? 'inline-block' : 'none')).attr('name', "value[" + gQuestionIndex + "][]").attr('value', $this.val()).attr('class', $this.attr('class')).attr('id', $this.attr('id') + 'Row');
$newBtn.appendTo($cell);
i++;
});
$tr.append($td);
$td.append($options);
$td.append($answer);
$tbody.append($tr);
count++;
$('#optionAndAnswer .answerBtns').hide();
$('#optionAndAnswer .answerBtns').removeClass('answerBtnsOn').addClass('answerBtnsOff');
updateAnswer($answer, gQuestionIndex);
}
由于
答案 0 :(得分:0)
我认为主要问题可能出在insertQuestion()
。
据我所知:
$newBtn.appendTo($cell);
是无条件的。如果不满足条件,append语句将无提示失败(无错误消息)。$newBtn
已成功附加到$cell
,$cell
也会附加到$row
,但$ row永远不会附加到任何内容。因此,DOM中不会出现任何newBtns。编辑:
尝试更换:
if (clickedNumber === 'True or False') {
$(this).closest('.option').siblings('.answer').find('input[name="answerName[True]"]').show();
$(this).closest('.option').siblings('.answer').find('input[name="answerName[False]"]').show();
} else if (clickedNumber === 'Yes or No') {
$(this).closest('.option').siblings('.answer').find('input[name="answerName[Yes]"]').show();
$(this).closest('.option').siblings('.answer').find('input[name="answerName[No]"]').show();
}
with:
var ans = $(this).closest('.option').siblings('.answer').find('input');
if (clickedNumber === 'True or False') {
ans.filter('[value="True"], [value="False"]').show();
} else if (clickedNumber === 'Yes or No') {
ans.filter('[value="Yes"], [value="No"]').show();
}