【问题标题】:jQuery addClass() not workingjQuery addClass()不起作用
【发布时间】:2011-04-19 18:15:44
【问题描述】:

我检查了有关此问题的其他问题,但它们没有帮助我。我对为什么这不起作用感到困惑,但与其浪费时间试图弄清楚,我想我最好在这里问一下。我有以下 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');。我的.selectedclass 现在看起来像这样:

.selected
{
     border: 1px solid red;
}

说实话,我看不出这里有什么问题。一定是忽略了什么,但是什么?谢谢

【问题讨论】:

  • 认为当您在 AJAX 请求中调用 $(this) 时,它引用的是 AJAX 对象,而不是点击的来源元素(如果这有意义的话)

标签: jquery css class dom addclass


【解决方案1】:

试试这个:

$("#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 对象上方的变量可确保您拥有对单击对象的引用

【讨论】:

  • 我很愚蠢,因为我的列表项不会采用红色边框,但是当我尝试使用 font-weight: bold 时,您的解决方案有效。非常感谢:D
【解决方案2】:

您使用this 作为选择器,但是this 不引用当前范围内的任何特定HTML 元素。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多