2011-04-19 61 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元素在當前範圍內。