我一直在制作这个表单,它必须使后端用户能够创建新问题供用户回答。在第一个.on(click)事件之后,表单被成功克隆并附加到 div(选择器#content ) ,但如果按下克隆按钮,它将不会再次复制表单。应用于我的下拉选择的.on(change)事件确实会更改相应 div 的内容,但仅限于原始表单。
这是 JQuery 代码:
$(document).ready(function () {
$('.addAnswer').on("click", function () {
var idx = $('#mp div[name^="antwoord"]:last').index() + 1;
$clone = $('#mp div[name^="antwoord"]:first').clone(true, true).attr('class', 'answer content_' + idx);
$('.removeAnswer').show;
$('#mp').append($clone);
$('.answer:last').each(function () {
$('b:last').empty();
$('b:last').prepend(String.fromCharCode(64 + idx) + ". ")
$('.addAnswer').on("click", function () {
idx++;
});
});
if (idx == 2) {
$('.removeAnswer').show();
}
});
$('.nextq').click(function () {
var newqid = $('#content form:last').index() + 1;
$('.done, .nextq, .remove').hide();
$('#content').append('<hr>');
$('#content').append($('form').html()).attr('class', 'q_' + newqid);
$('.nextq').on("click", function () {
newqid++;
});
$('.done:last, .nextq:last, .remove:last').show();
return false;
});
$('.group').hide();
$('#text:last').show();
$('.select:last').on("change", function () {
$('.group').hide();
$('#' + $(this).val() + ':last').fadeIn();
$('button.' + $(this).val() + ':last').fadeIn();
});
});
因为我认为发布整个 HTML 模板有点过分,所以我为你们提供了一个JSFiddle。
对于那些感觉很好的人来说,还有一个额外的问题:在 JQuery 代码中,可以看到 HTML 的内容正在使用.html()进行解析并附加了.append。(JSFiddle上的第 33 行)作为.on( change)函数切换它应该更改的分区的内容,.html()看到这些更改并将它们一起带走。我希望.on(click)函数以原始状态附加 div 的内容,后端用户事先所做的更改不会改变。对此的任何帮助将不胜感激。