在jquery中向一个按钮添加一个类

时间:2011-04-17 17:29:39

标签: jquery css

我试图在ajax之后向我的按钮添加一个css类:

$('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;

警报有效,但它不会向其添加类型vote-up-1。页面上有几个相同类的实例(即投票-0),所以如果我将(this)改为'vote-up-0',它会改变所有这些实例。有人有什么想法吗?

3 个答案:

答案 0 :(得分:2)

在“点击”处理程序的顶部,隐藏this值:

var theButton = this;

然后,在你的“.post()”处理程序中:

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

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

答案 1 :(得分:0)

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

var btnHnd = $(this);现在你可以做帖子了:$.post('user/?action=ajax', { ...

答案 2 :(得分:0)

更改此

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