2012-01-23 58 views
1

在這個腳本,我從MySQL阿雷獲取數據的加載,並返回數據的每個陣列上添加少許喜歡的按鈕,該代碼是jQuery(this)作爲jQuery Ajax的繼承?

...php while code to fetch array... 
...more output... 
<a class="favlink" id="'.$row['id'].'">favourite</a> 
..more output... 

,並從我以前用過的jQuery該位運行PHP腳本:

<script> 
$(function() { 
    $(".favlink").bind("click", function() { 
     $.ajax({ 
      type: "GET", 
      data: "v="+$(this).attr("id"), 
      url: "fav.php", 
      success: function(data) { 
      alert('asf'); 
      } 
     }); 
    }); 
}); 
</script> 

這工作正常,但我真正想要做的,就是改變這樣的成功的東西:

success: function(data) { 
$(this).html("<font color='#ccc'><a href='#'>favourited</a></font>"); 
} 

而且,這不起作用!

有沒有什麼辦法可以改變點擊最喜歡的鏈接到不同的字體顏色/並將文本從'最喜歡'改爲'喜歡'?

我認爲'這''財產不再'成功'出於某種原因,但我不知道?

謝謝!

回答

3

您必須定義ajaxcontext。請參閱從jQuery的網站docs

contextObject這個對象將作出所有Ajax相關 回調的背景下。默認情況下,上下文是一個代表調用中使用的ajax設置的對象($ .ajaxSettings與傳遞給$ .ajax的 設置合併)。例如指定一個DOM元素作爲 上下文將是一個 要求的完整的回調,像這樣的背景下:

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    $(this).addClass("done"); 
    } 
}); 

因此,在你的情況下,我想這是你所需要的:

$.ajax({ 
    url: "test.html", 
    context: this,//OR: $(".favlink")[0], // Depends on your scope. 
    success: function(){ 
     $(this).html("<font color='#ccc'><a href='#'>favourited</a></font>"); 
    } 
}); 
+0

謝謝您的回答!真的幫了! :) – unicornication

+2

+1支持文檔 – Chad

+1

@Chad。感謝文檔支持... – gdoron

1
$(function() { 
    $('.favlink').click(function() { // this may match more than one element 
     var $this = $(this); 
     $.ajax({ 
      'type': 'GET', 
      'data': 'v=' + this.id, 
      'url': 'fav.php', 
      'success': function(data) { 
       $this.html('whatever you want'); 
      } 
     }); 
    }); 
}); 

您也可以使用context參數jQuery.ajax,但我個人認爲這(哈!)更具有可讀性。

+0

謝謝您的回答:) – unicornication

2

將以下行添加到$.ajax參數中。默認情況下,上下文鏈接到請求的$.ajaxSettings。設置下面的行將更改ajax請求中this的上下文,使其等於調用方法的上下文。

context: this, 

所以,你的新代碼將看起來像這樣:

<script> 
$(function() { 
    $(".favlink").bind("click", function() { 
     $.ajax({ 
      type: "GET", 
      data: "v="+$(this).attr("id"), 
      url: "fav.php", 
      context: this, 
      success: function(data) { 
       $(this).html("<font color='#ccc'><a href='#'>favourited</a></font>"); 
      } 
     }); 
    }); 
}); 
</script> 
+0

謝謝! :)沒有意識到有一個上下文參數! – unicornication