我正在使用jQuery循环查看事件列表并检查用户的出勤状态。使用event_id的rel值进行的简单ajax调用会产生“0”或“1”的结果。
如果出勤是肯定的(1)那么我想在链接中添加一个.selected类。
我的通话似乎有效,我可以将结果提醒,但出于某种原因,我尝试时没有添加课程。
这是我的HTML:
<a class="icon attend tip" href="#" title="RSVP Your Attendance" rel="59"></a>
这是我的jQuery:
$('a.attend').each(function(index) {
$.ajax({
url: '<?php echo site_url('ajax/event_attendance_status') ?>/' + $(this).attr('rel'),
success: function(data) {
if (data == '1') {
$(this).addClass('selected');
};
}
});
});
答案 0 :(得分:1)
当您在回调函数中时,该函数的上下文与您设置请求时的上下文不同。因此,此对象引用其他内容(在这种情况下,我认为它是XMLHttpRequest
对象。)
有两种方法可以做到这一点。您可以将this
对象保存在另一个变量中,然后使用该变量来访问该元素,如下所示:
var element = $(this);
$.ajax({
url: '<?php echo site_url('ajax/event_attendance_status') ?>/' + $(this).attr('rel'),
success: function(data) {
if (data == '1') {
$(element).addClass('selected');
};
}
});
替代方案,坦率更好,更优雅的解决方案是使用jQuery.proxy
方法确保在正确的上下文中触发回调。
$.ajax({
url: '<?php echo site_url('ajax/event_attendance_status') ?>/' + $(this).attr('rel'),
success: jQuery.proxy(function(data) {
if (data == '1') {
$(this).addClass('selected');
}, this);
}
});