我是jQuery的新手,并且遇到了一些代码问题:
var theCommentId = '';
var buildFormName = '';
$('.comment_submit').bind('click', function() {
theCommentId = $(this).attr('this_id');
buildFormName = ('#AddMessageForm_' + theCommentId);
});
alert(buildFormName);
这将返回'#AddMessageForm_1'(或2或234,具体取决于单击的按钮)。那部分工作得很好。
但是我需要在这里传递buildFormName
,这样我就可以处理多个不同名称的表单。表单名称是从附加到addMessageForm
$(buildFormName).submit(function(e) {
// process form data here...
$.post('process.php', $(this).serialize(), function(msg) {
}
上面没有返回任何错误,但$this
为空,我无法从空$this
创建数据库行!如果我不尝试在那里传递变量buildFormName
,它就有效。例如:
$('#addMessageForm_1').submit(function(e) {
// process form data here...
$.post('process.php',$(this).serialize(),function(msg){
}
工作正常。我希望我在这里缺少一些简单的东西。非常感谢任何帮助!
谢谢!
答案 0 :(得分:1)
您应该将提交处理程序作为单独的函数创建,然后使用它。试试这个。
$('.comment_submit').bind('click',function(){
theCommentId = $(this).attr('this_id');
buildFormName = ('#AddMessageForm_' + theCommentId);
$(buildFormName).submit(formSubmitHandler);
});
function formSubmitHandler(){
// process form data here...
$.post('process.php',$(this).serialize(),function(msg){
}
}
答案 1 :(得分:0)
尝试将this
替换为e.target
,看看是否有帮助。
$(buildFormName).submit(function(e) {
// process form data here...
$.post('process.php', $(e.target).serialize(), function(msg) {
}