jQuery addClass()不起作用

cab*_*ret 2 css jquery dom addclass class

我检查了有关这个问题的其他问题,但他们没有帮助我.我很困惑为什么这不起作用,而不是浪费时间试图解决它,我想我最好问这里.我有以下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']);
            }
        });
    });
Run Code Online (Sandbox Code Playgroud)

这里的一切都很好,除了$(this).addClass('selected');.我的.selected课现在看起来像这样:

.selected
{
     border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)

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

loc*_*zak 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对象上方的变量可确保您具有对所单击对象的引用