任何人都可以告诉我为什么我的代码:$(this).parent().hide();
在.post()
之外放置时可以正常工作(隐藏所选div):
$(document).on('submit', '.reply-message-form', function(e) {
$(this).parent().hide();
if($(this).children('.post-reply-message-textarea').val() == '')
return false;
$.post("<?php echo Yii::app()->createUrl('event/view', array('id'=>Yii::app()->controller->actionParams['id'])); ?>",
$(this).serialize(), function(response) {
var responseObject = jQuery.parseJSON(response);
// if successful.. process..
if (responseObject.success == true) {
} else {
alert('failed');
}
});
return false;
}) ;
但是如果将.hide()
放在里面 .post()
成功函数没有任何反应..?!内部代码:
$(document).on('submit', '.reply-message-form', function(e) {
if($(this).children('.post-reply-message-textarea').val() == '')
return false;
$.post("<?php echo Yii::app()->createUrl('event/view', array('id'=>Yii::app()->controller->actionParams['id'])); ?>",
$(this).serialize(), function(response) {
$(this).parent().hide();
return false;
var responseObject = jQuery.parseJSON(response);
// if successful.. process..
if (responseObject.success == true) {
} else {
alert('failed');
}
});
return false;
}) ;
只是为了清除任何疑问 - responseObject.success确实== true(我已通过警报确认等)。
提前致谢!
答案 0 :(得分:5)
尝试,因为当你在回调中移动时,$(this)不一样。
$(document).on('submit', '.reply-message-form', function(e) {
var elt = $(this).parent();
if($(this).children('.post-reply-message-textarea').val() == '')
return false;
$.post("<?php echo Yii::app()->createUrl('event/view', array('id'=>Yii::app()->controller->actionParams['id'])); ?>",
$(this).serialize(), function(response) {
$(elt).hide();
return false;
var responseObject = jQuery.parseJSON(response);
// if successful.. process..
if (responseObject.success == true) {
} else {
alert('failed');
}
});
return false;
}) ;
答案 1 :(得分:1)
this
不再代表提交的表单,因为它位于来自ajax调用的回调中。在进行ajax调用之前,请使用此设置变量。
var myForm = this;
然后在您的成功回调中,参考$(myForm)