这可能是一个非常基本的问题,我知道如何使用纯DOM进行操作,但是想学习JQuery的方法。
在使用适当的JQuery选择器识别节点集之后,我想在每个节点附加一个textarea,Save and Cancel按钮,并在按钮上附加适当的回调函数,将值存储到数据库中。如果数据库存储了值 已经,它应该在textarea中预先填充。我可以处理后端交互部分,我只是想知道做这种事情的最佳实践,直到添加/删除表单元素。
由于
答案 0 :(得分:4)
这样的事情,也许是:
jQuery(yourNodes).each(function(){
var self = this,
loading = $('<div>LOADING</div>').appendTo(self),
id = self.id.replace(/^edit/,'');
// Retrieve textarea from server
jQuery.get('/getDataForTextArea?id=' + id, function(textareaValue){
loading.remove();
var textarea = jQuery('<textarea/>')
.attr('id', 'txt' + id)
.val(textareaValue)
.add(
jQuery('<button>Save</button>')
.attr('id', 'btnSave' + id)
.click(function(){ /* Click handler */ })
)
.add(
jQuery('<button>Cancel</button>')
.attr('id', 'btnCancel' + id)
.click(function(){
/* Remove nodes */
tr.remove();
})
);
var tr = jQuery('<tr colspan="4"><td/></tr>');
tr.find('td').append(textarea);
tr.appendTo(self);
});
});
答案 1 :(得分:1)
简单地
$('<your nodes>').append('<textarea name="...">' + textarea_value + '</textarea>');
或使用$(html)
表单:
$('<textarea name="...">' + textarea_value + '</textarea>').appendTo('<your nodes>');
如果您需要重复值,也可以使用$().clone
方法。看看official docs。
答案 2 :(得分:0)
至于附加textarea,按钮到选定的节点@Nikita Prokopov的答案将成功。但是,当您想要添加callbacks
和后端交互时,最好的方法是编写插件。
答案 3 :(得分:-1)
Nikita Prokopov ......回答了这个问题。我已经和jquery一起工作了一段时间,这就是我发现的。
始终为行动命名如下:
var SubmitText = $('#form-text-idNumber').submit(function {
//do stuff here
return false;
}
不要这样做:
$('#form-text-idNumber').submit(function {
//do stuff here
return false;
}
如果您将操作赋予变量,则不会干扰页面上的其他类似表单
只要给你的所有动作和部分一个变量,你应该做得很好。