如何在AJAX回调后选择单击的链接类或ID

时间:2013-12-31 15:41:15

标签: javascript jquery ajax

我有一个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')
            }
        }
    })

我做错了什么?

3 个答案:

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