我有一个Like按钮。单击该按钮时,会通过Ajax将一条记录插入到DB中。如果插入成功,我将按钮的名称更改为不同
在页面中我有10多个像按钮,我想选择点击按钮。
我正在尝试使用$(this)
,但这不适用于此特定代码。
这是代码。
$('.content').on('click', '.like_music', function(){
var music_id = $(this).parents('.music-item').attr('id');
$.ajax({
type:'POST',
url:'add_like_music.php',
data:{'music_id':music_id},
success:function(data){
alert(data);
if (data == "YES"){
$(this).html('unlike')
}
}
})
我做错了什么?
答案 0 :(得分:5)
使用ajax方法的上下文选项:
$.ajax({
context: this,
...
});
答案 1 :(得分:1)
$(this)
可以在函数内部访问,但不能在回调中访问。您可以将它存储在ajax调用之外的变量中:
$('.content').on('click','.like_music',function(){
var $this = $(this);
var music_id = $this.parents('.music-item').attr('id');
$.ajax({
type:'POST',
url:'add_like_music.php',
data:{'music_id':music_id},
success:function(data){
alert(data);
if(data=="YES"){
$this.html('unlike');
}
}
});
答案 2 :(得分:1)
试试这段代码:
$('.content').on('click','.like_music',function(){
var music_id = $(this).closest('.music-item').attr('id');
^-----i change this
$.ajax({
type:'POST',
url:'add_like_music.php',
data:{'music_id':music_id},
success:function(data){
alert(data);
if(data=="YES"){
$this.html('unlike');
}
}
});