jQuery addClass () не работает - PullRequest
       4

jQuery addClass () не работает

2 голосов
/ 19 апреля 2011

Я проверил другие вопросы об этой проблеме, но они не помогли мне. Я не понимаю, почему это не работает, но вместо того, чтобы тратить часы на то, чтобы понять, я решил спросить здесь У меня есть следующий вызов 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 ]

11 голосов
/ 19 апреля 2011

Попробуйте это:

$("#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']);
            }
        });
    });

$ (this) в успехе больше не отражает нажатый объект из-за области видимости в javascript.вместо этого он отражает объект $ .ajax.Присвоение его переменной над объектом ajax гарантирует, что у вас есть ссылка на выбранный объект

1 голос
/ 19 апреля 2011

Вы используете this в качестве селектора, однако this не ссылается на какой-либо конкретный элемент HTML в текущей области.

...