我检查了有关此问题的其他问题,但他们没有帮助我。我很困惑为什么这不起作用,而不是浪费时间试图解决它,我想我最好问这里。我有以下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;
}
老实说,我不认为这里有什么问题。一定要忽略一些东西,但是什么?感谢
答案 0 :(得分: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对象上方的变量可确保您具有对所单击对象的引用
答案 1 :(得分:1)
您使用this
作为选择器,但this
未引用当前作用域中的任何特定HTML元素。