Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery使用多个相同类更新div内容_Javascript_Jquery - Fatal编程技术网

Javascript Jquery使用多个相同类更新div内容

Javascript Jquery使用多个相同类更新div内容,javascript,jquery,Javascript,Jquery,我正在我的网站上建立一个简单的“喜欢”服务。我希望用户能够点击链接喜欢的东西,得到总喜欢(从php脚本返回) 从脚本获取数据以更新div时遇到问题。这是我的问题: <div id="112" class="like">Like it</div> <div id="113" class="like">Like it</div> <div id="114" class="like">Like it</div> <scri

我正在我的网站上建立一个简单的“喜欢”服务。我希望用户能够点击链接喜欢的东西,得到总喜欢(从php脚本返回)

从脚本获取数据以更新div时遇到问题。这是我的问题:

<div id="112" class="like">Like it</div>
<div id="113" class="like">Like it</div>
<div id="114" class="like">Like it</div>

<script>
$(".like" ).click(function() {
var idl = $(this).attr("id");
$.ajax({type:"POST", data: likeid=idl, url:"ajax/publike.php", 
            success: function(data){
                $(this).html(data);
            },
                        error: function(){
                    alert ("Error");
            }
        });
        return false;
});
</script>
喜欢吗
喜欢吗
喜欢吗
$(“.like”)。单击(函数(){
var idl=$(this.attr(“id”);
$.ajax({type:“POST”,data:likeid=idl,url:“ajax/publike.php”,
成功:功能(数据){
$(this).html(数据);
},
错误:函数(){
警报(“错误”);
}
});
返回false;
});
我只想用我从(数据)中获得的内容更新div,但不更新。如果我更改为
$(“.like”).html(数据)它可以工作,但我有很多类,比如,我只需要在单击div时更新

谢谢

请执行以下操作:

<script>

$(".like" ).click(function()
{
    var idl = $(this).attr("id");

    var link = $(this);

    $.ajax({type:"POST", data: likeid=idl, url:"ajax/publike.php", 
    success: function(data)
    {
        link.html(data);
    },
    error: function()
    {
        alert ("Error");
    }});

    return false;
});

</script>

$(“.like”)。单击(函数()
{
var idl=$(this.attr(“id”);
var-link=$(这个);
$.ajax({type:“POST”,data:likeid=idl,url:“ajax/publike.php”,
成功:功能(数据)
{
html(数据);
},
错误:函数()
{
警报(“错误”);
}});
返回false;
});

当AJAX回调运行时,
不再作为触发事件的元素在范围内。您需要保留对它的引用:

$(".like" ).click(function() {
    var likedElement = $(this);
    var idl = $(this).attr("id");
    $.ajax({type:"POST", data: likeid=idl, url:"ajax/publike.php", 
        success: function(data){
            likedElement.html(data);
        },
        error: function(){
            alert ("Error");
        }
    });
    return false;
});
试试这个

<script>
    $(".like" ).click(function() {
    var idl = $(this).attr("id");
    $.ajax({type:"POST", data: likeid=idl, url:"ajax/publike.php", 
                success: function(data){
                    $('#'+idl).html(data);
                },
                            error: function(){
                        alert ("Error");
                }
            });
            return false;
    });
    </script>

$(“.like”)。单击(函数(){
var idl=$(this.attr(“id”);
$.ajax({type:“POST”,data:likeid=idl,url:“ajax/publike.php”,
成功:功能(数据){
$('#'+idl).html(数据);
},
错误:函数(){
警报(“错误”);
}
});
返回false;
});

在进行ajax调用时设置元素的上下文。这比仅仅依赖范围变量更安全。如果在返回第一个ajax调用之前单击了第二个div,则只有最后一个div的html会得到更新。此方法将正确更新两个div

<script>
$(".like" ).click(function() {

var div$ = $(this);

$.ajax({type:"POST", data: likeid=div$.attr("id"), url:"ajax/publike.php", context: div$,
            success: function(data){
                this.html(data);
            },
                        error: function(){
                    alert ("Error");
            }
        });
        return false;
});
</script>

$(“.like”)。单击(函数(){
var div$=$(本);
$.ajax({type:“POST”,数据:likeid=div$.attr(“id”),url:“ajax/publike.php”,上下文:div$,
成功:功能(数据){
html(数据);
},
错误:函数(){
警报(“错误”);
}
});
返回false;
});

@Maël:它有帮助并解决了问题吗?如果是,请将此答案标记为已接受并考虑将其投票。