Следующая функция добавляет новый текстовый ввод после каждого флажка, когда он установлен, и удаляет текстовый ввод, когда флажок снят.Имя ввода текста основано на имени флажка.
jQuery(function($){
var key = 'checkbox-master';
$('input:checkbox').click(function(){
var self = $(this);
var next = self.next();
if (this.checked){
if (next.data(key)!=this){
var n = this.name+'-text';
self.after($('<input type="text" name="'+n+'">').data(key,this););
}
}else{
if (next.data(key)==this) next.remove();
}
});
});
Интересно, действительно ли вы этого хотите, вместо того, чтобы просто динамически отображать и скрывать некоторые предварительно созданные текстовые входы, которыеимена, которые вы хотите.Это было бы чище, если предположить, что текстовые вводы всегда следуют сразу за флажками в коде:
jQuery(function($){
$('input:checkbox').click(function(){
$(this).next()[this.checked ? 'show' : 'hide']();
});
});