我有这个简单的表单和验证,一切都工作得很好,除了“this”指向,嗯,我不知道是什么:
$('#contact').validator().submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: this.action,
data: {
mail: jQuery('input[name="mail"]').val(),
message: jQuery('textarea[name="message"]').val(),
success: function(){
$(this).hide();
}
});
});
我希望此代码在成功时隐藏#contact,但这永远不会发生。
我尝试alert(this)
,但我得到了[object Object]
,当我执行console.log( $( this) )
(只有旁边带有 + 的对象,当我单击 + 时,我会看到除此元素的类/id 之外的各种数据:( )。有什么想法吗?我的代码有问题吗?
最佳答案
this
在 success
方法的上下文中不引用单击的元素,您应该缓存该元素:
$('#contact').validator().submit(function(e){
e.preventDefault();
var $this = $(this); // cache the object
$.ajax({
type: "POST",
url: this.action,
data: {
mail: jQuery('input[name="mail"]').val(),
message: jQuery('textarea[name="message"]').val()
}, // missing }
success: function(){
$this.hide();
}
});
});
关于javascript - jQuery this() 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048711/