2011-04-16 28 views
0

我使用jQuery來遍歷事件列表並檢查用戶出席狀態。對event_id使用rel值的簡單ajax調用將導致結果爲「0」或「1」。調用ajax來檢查狀態,然後添加一個css類

如果出席率爲正數(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

我們可以看到一個真人版的調試? – Bene 2011-04-16 16:14:21

回答

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); 
    } 
}); 
+0

+1解決上下文問題。也可以通過將'context:this'添加到傳遞給ajax調用的設置對象來完成。你有什麼想法與網址發生了什麼?這是服務器端代碼。 – 2011-04-16 16:47:24

+0

謝謝!我忘記了'背景:這個'。它看起來是一段調用CodeIgniter助手站點URL的PHP​​代碼。很明顯,作者正在使用它來輸出URL。 – 2011-04-16 17:30:38

+0

好的,我明白了。我當時認爲這是一個「純粹」JavaScript代碼片段,實際上它是生成JavasScript的PHP模板片段。謝謝。 – 2011-04-16 18:05:55

相關問題