javascript - jQuery this() 似乎不起作用

标签 javascript jquery html ajax this

我有这个简单的表单和验证,一切都工作得很好,除了“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 之外的各种数据:( )。有什么想法吗?我的代码有问题吗?

最佳答案

thissuccess 方法的上下文中不引用单击的元素,您应该缓存该元素:

$('#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/

相关文章:

javascript - 如何获取 iframe 的父元素(不仅仅是窗口)?

javascript - 使用 PhantomJS 循环打开网页(每次循环迭代具有不同的参数)不起作用

javascript - Bootstrap的JavaScript需要jQuery版本1.9.1或更高版本,但低于版本3

javascript - 使用 javascript 使用算法解决问题

jquery - 使用clone()复制隐藏元素-更好的方法吗?

javascript - 有选择地展平嵌套 JSON 结构

asp.net - 如何处理 $.ajax POST (JQuery) 中的单引号?

html - ipad 上的离线网络应用程序仅在在线加载一次后才能运行

javascript - 在 javascript 中创建多个过滤选择器

html - 我无法将图片和文字正确内联