调用ajax检查状态然后添加一个css类

时间:2011-04-16 15:58:54

标签: jquery ajax

我正在使用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');
            };
          }
        });

    });

1 个答案:

答案 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);
    }
});