Javascript jQuery removeClass和addClass不工作

Javascript jQuery removeClass和addClass不工作,javascript,jquery,ajax,addclass,removeclass,Javascript,Jquery,Ajax,Addclass,Removeclass,我创建了一个按钮,当用户单击它时,当前类应该被替换为新类,反之亦然。 但是addClass或removeClass都没有显示任何效果。我在控制台日志中没有看到任何错误或警告MSG JQuery代码: $('.vote_btn').click(function(){ $.ajax({ url:'/joseph/pages/votes.php', type: 'post', //dataType:'json', data:{'com

我创建了一个按钮,当用户单击它时,当前类应该被替换为新类,反之亦然。 但是addClass或removeClass都没有显示任何效果。我在控制台日志中没有看到任何错误或警告MSG

JQuery代码:

$('.vote_btn').click(function(){
  $.ajax({
        url:'/joseph/pages/votes.php',
        type: 'post',
        //dataType:'json',
        data:{'comment_id':$(this).data('commentid')},
        success: function(data){
          if(data == 'up'){
              $(this).removeClass('fa-thumbs-o-up').addClass('fa-thumbs-up');
          } else if(data == 'reversed') {
              $(this).removeClass('fa-thumbs-up').addClass('fa-thumbs-o-up');
          } else {
            alert(data);
          }
        }
  });
});
HTML代码:

<span id="<?=$comment['id']?>" class="fa fa-thumbs-o-up vote_btn" data-commentid="<?=$comment['id']?>" data-postid="<?=$getpost['post_id']?>" data-who="<?=$comment['commenter_id']?>"></span>
jQuery对象
$(此)
不再引用单击的
.vote\u btn
。在成功回调中,将单击的按钮存储在变量中,并在回调中使用此变量:

$('.vote_btn').click(function(){
  var _this = $(this);

  $.ajax({
        url:'/joseph/pages/votes.php',
        type: 'post',
        //dataType:'json',
        data:{'comment_id':_this.data('commentid')},
        success: function(data){
          if(data == 'up'){
              _this.removeClass('fa-thumbs-o-up').addClass('fa-thumbs-up');
          } else if(data == 'reversed') {
              _this.removeClass('fa-thumbs-up').addClass('fa-thumbs-o-up');
          } else {
            alert(data);
          }
        }
  });
});
希望这能有所帮助。

试试看,这会有用的:

 $('.vote_btn').click(function(){
  var curEvent=$(this);
   $.ajax({
    url:'/joseph/pages/votes.php',
    type: 'post',
    //dataType:'json',
    data:{'comment_id':$(this).data('commentid')},
    success: function(data){
      if(data == 'up'){
          $(curEvent).removeClass('fa-thumbs-o-up').addClass('fa-thumbs-up');
      } else if(data == 'reversed') {
          $(curEvent).removeClass('fa-thumbs-up').addClass('fa-thumbs-o-up');
      } else {
        alert(data);
      }
    }
   });
   });

$(此)
并不是指您认为它在成功函数中所做的操作。由于您正在
curEvent
中存储
$(此)
,因此没有理由重新包装
curEvent
(即下面的
$(curEvent)
)。只需在回调函数中使用
curEvent.removeClass(…)
,就可以在回调函数中的jQuery对象中重新包装curEvent。大多数情况下都不需要。这取决于不同的浏览器。通过包装,这将是普遍有效的,你能举出一个来源吗?我很好奇这个对象是如何在ajax回调中“取消包装”的。我不知道具体的情况,但我多次遇到问题,这就是为什么我在实践中使用$来包装它。虽然它给出了相同的结果,但现在我相信包装