首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery选择器$(此)不按预期工作

jQuery选择器$(此)不按预期工作
EN

Stack Overflow用户
提问于 2010-11-24 15:03:41
回答 2查看 297关注 0票数 1

在提交ajax请求时,我希望在发送之前切换一个类,在错误时切换回类,或者在一切顺利的情况下保留它。但是$(this)选择器似乎不起作用,我不知道为什么。我使用的是jQuery 1.4.3。

html

代码语言:javascript
复制
<a class="vote-down vote-down-112 state-3" data-postid="112" data-voteid="6">down</a>

js

代码语言:javascript
复制
$('.vote-down').click(function() {
    var voteData = '&postId=' + $(this).data('postId') + '&voteId=' + $(this).data('voteid');
    $.ajax({
        dataType: 'script',
        url: "myURL" + "?format=js" + voteData,
        error: function(XMLHttpRequest, textStatus, errorThrown) { $(this).toggleClass("status-3"); },
        beforeSend: function(XMLHttpRequest) { $(this).toggleClass("status-3"); }
    });
    return false;
}); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-24 15:06:38

默认情况下,this是指ajax对象本身,如果希望this是特定的,请使用context option设置回调中的this,如下所示:

代码语言:javascript
复制
$('.vote-down').click(function() {
  var voteData = '&postId=' + $(this).data('postId') + 
                 '&voteId=' + $(this).data('voteid');
  $.ajax({
     context: this,
     dataType: 'script',
     url: "myURL" + "?format=js" + voteData,
     error: function() { $(this).toggleClass("status-3"); },
     beforeSend: function() { $(this).toggleClass("status-3"); }
  });
  return false;
}); 

我删除了函数参数只是为了清理,如果您不使用它们,则不需要它们。

票数 6
EN

Stack Overflow用户

发布于 2010-11-24 15:07:01

常见的错误。this引用XHR请求,而不是元素:

代码语言:javascript
复制
$('.vote-down').click(function() {
  var that = this; // save a reference to the element;

  $.ajax({
    dataType: 'script',
    url: "myURL" + "?format=js" + voteData,
    error: function() {
      $(that).toggleClass("status-3");
    },
    beforeSend: function() { 
      $(that).toggleClass("status-3");
    }
  });

  return false;
});

这是因为jQuery调用错误和beforeSend函数,如:userfunction.apply( xhr[, args] );,这使得this关键字引用XHR。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4268197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档