jQuery addClass()不起作用

时间:2011-04-19 18:15:44

标签: jquery css class dom addclass

我检查了有关此问题的其他问题,但他们没有帮助我。我很困惑为什么这不起作用,而不是浪费时间试图解决它,我想我最好问这里。我有以下AJAX调用:

        $("#day_list li").live("click", function()  {
        var day = $(this).attr('value');
        $.ajax({
            type: "POST",
            url: "/planner/get_detail",
            data: { post_day: day, post_month: current_month, post_year: current_year },
            success: function(data)
            {
                $(this).addClass('selected');
                $(".detail_header").html(data['detail_header']);
            }
        });
    });

此处的所有内容均正常,但$(this).addClass('selected');除外。我的.selected课程现在看起来像这样:

.selected
{
     border: 1px solid red;
}

老实说,我不认为这里有什么问题。一定要忽略一些东西,但是什么?感谢

2 个答案:

答案 0 :(得分:11)

试试这个:

$("#day_list li").live("click", function()  {
        var day = $(this).attr('value');
        var clickedObj = $(this);
        $.ajax({
            type: "POST",
            url: "/planner/get_detail",
            data: { post_day: day, post_month: current_month, post_year: current_year },
            success: function(data)
            {
                clickedObj.addClass('selected');
                $(".detail_header").html(data['detail_header']);
            }
        });
    });

由于javascript中的范围,成功中的$(this)不再反映被点击的对象。相反,它反映了$ .ajax对象。将其分配给ajax对象上方的变量可确保您具有对所单击对象的引用

答案 1 :(得分:1)

您使用this作为选择器,但this未引用当前作用域中的任何特定HTML元素。