2011-04-17 210 views
1

我想一些Ajax后的CSS类添加到我的按钮:添加类按钮jQuery中

$('a.vote-up-0').click(function() { 

    var id = $(this).siblings('.reply-id').val(); 
    var ajax_auth_token = $('#auth_token').val(); 


    $.post('user/?action=ajax', { 
     vote_type: 'up', 
     reply_id: id, 
     auth_token: ajax_auth_token 
    }, function(data, return_status) { 

     var json_data = jQuery.parseJSON(data); 

     switch(json_data.r_message) 
     { 
      case "success": 
       output = "Yay it works!"; // change 
       alert(output); 
       $(this).addClass('vote-up-1'); // ** the culprit ** 
      break; 

警报的作品,但它不类票上加1它。在页面上有几个相同类的实例(即投票0),所以如果我改变(这个)为'投票0',它会改变所有这些。有人有主意吗?

+0

放警报 – Nighil 2011-04-17 17:34:32

回答

0

兄弟:$(this).addClass('vote-up-1'); // ** the culprit **是真正的罪魁祸首。 $(this)在此范围内不可用,所以最好在执行任何ajax之前获取按钮的句柄。如:

var btnHnd = $(this);现在你可以做的东西后:$.post('user/?action=ajax', { ...

2

最多在你的 “点击” 处理器的顶部,藏匿this值:

var theButton = this; 

然后,在你的 “员额()” 处理程序:

$(theButton).addClass('vote-up-1'); 

的问题是,当jQuery调用你的“.post()”处理函数时,this不会引用按钮。因此,您将副本保存到本地变量中,并且在时间到了的时候它会在那里等待处理程序。

0

变化的罪魁祸首线和检查后,该

$(putyourbuttonidhere).addClass('vote-up-1');