2011-04-19 27 views
2

我检查了关于这个问题的其他问题,但他们没有帮助我。我很困惑,为什么这不起作用,而不是浪费数小时试图弄清楚,我想我最好在这里问。我有以下的AJAX调用:这里jQuery addClass()不起作用

 $("#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

我*认为当您在AJAX请求中调用$(this)时,它引用AJAX对象,而不是单击来自的元素(如果有意义的话) – fin1te 2011-04-19 18:18:15

回答

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范围的点击的对象。相反,它反映了$ .ajax对象。它分配给了Ajax对象高于变量确保您有被点击的对象

+0

我很愚蠢,因为我的listitems不会采取一个红色的边框,但你的解决方案工作时,我尝试与字体重量:粗体。非常感谢:D – cabaret 2011-04-19 18:19:58

+0

没问题,很高兴我可以帮忙 – locrizak 2011-04-19 18:21:14

1

参考您正在使用this作为你选择器,但是this不是指任何特定的HTML元素在当前范围内。