Here我有一个html代码,我连续输入了输入的文本框。如何在使用parent()
函数在表中创建包含另一个输入文本框的新行时,如何在同一个表中使用“+”按钮?
我在这里有一些示例jQuery代码,但它们并没有真正起作用:
$(".plus").live("click", function(){
var parent = $(this).parent().parent().parent(".iteration");
parent.after('<table width="100%" border="0" bordercolor="#000000"><tr><td colspan="2"><label><input type="text" value="Create a task for this iteration" size="75%" height="25px"/></label></td></tr></table>');
var nbinput = parent.find("input[type='text']").length;
if(nbinput == 5)
parent.find(".plus").attr("disabled","disabled");
else if(nbinput == 2)
parent.find(".moins").attr("disabled","");
});
$(".moins").live("click", function(){
var parent = $(this).parent().parent().parent(".iteration");
parent.children("input").last().remove();
var nbinput = parent.find("input[type='text']").length;
if(nbinput == 4)
parent.find(".plus").attr("disabled","");
else if(nbinput == 1)
parent.find(".moins").attr("disabled","disabled");
});
答案 0 :(得分:2)
嗯,一些简化会有很长的路要走:
var parent, attribute_toggle;
attribute_toggle = function (nbinput, parent) {
switch(nbinput) {
case 5:
parent.find('.plus').attr('disabled', 'disabled');
case 4:
parent.find('.plus').removeAttr('disabled');
case 2:
parent.find('.moins').removeAttr('disabled');
case 1:
parent.find('.moins').attr('disabled', 'disabled');
}
};
$('.plus').live('click', function() {
parent = $(this).parents('.iteration:first');
parent.after('... removed for brevity ...');
attribute_toggle(parent.find('input:text').length, parent);
});
$('.moins').live('click', function() {
parent = $(this).parents('.iteration:first');
parent.children('input:last').remove();
attribute_toggle(parent.find('input:text').length, parent);
});
已更新,更易于阅读,并将交换机合并为一个功能。
现在,它更清晰,解释当您尝试运行此代码时会发生什么,并将其与您希望发生的情况进行对比。
答案 1 :(得分:1)
我认为这是你的parent()
系列。看起来你没有考虑td和tr等元素。试试var parent = $('.iteration')
我不知道用户界面的确切预期结果,所以除此之外我不能说更多。