JQuery属性总是返回相同的值

JQuery attr always returns the same value

本文关键字:返回 属性 JQuery      更新时间:2023-09-26

伙计们,我有帖子列表,每个帖子都有自己的ID。我想用jquery从自定义属性中获取ID。问题是,当我尝试调试时,我总是得到一些值。

这是我用PHP从数据库中列出的html表。每个帖子都有特定的ID。

Name      |    id 
-------------------
Post 1    |   188
Post 2    |   189
Post 3    |   190
<i id="like" class="glyphicon glyphicon-heart" data-id="<?=$post->post_id;?>"></i> Like

因此,当我试图从数据id脚本中获取值时,始终返回188数字。当点击帖子1、帖子2、帖子3时,所有时间值都是188!!!什么?

这是JQuery:

isPostLiked: function() {
    var isLiked = false;
    var likeText = $("#like");
    var itemId = likeText.attr("data-id");
    // debug 
    Post.postLikeBtn.click(function() {
      console.log(itemId);
    });
    //$.ajax({
    //    type: "post",
    //    url: baseurl + "/like/isLikedAjaxAction/"
    //});
    if (isLiked == true) {
      likeText.css("color", "red");
    }
},

您似乎在循环中生成HTML。请记住,HTML中的标识符必须是唯一的,您可以使用CSS类,然后可以使用类选择器(".class")。将HTML修改为

<i class="like glyphicon glyphicon-heart" data-id="<?=$post->post_id;?>"></i> Like

更改点击处理程序并使用当前元素上下文(即this )获取ID

$('.like').click(function(){
    var id= $(this).data('id');
});

每个元素都必须有一个唯一的id属性。不能有多个id为"like"的元素。请尝试以下操作:

<i class="like glyphicon glyphicon-heart" data-id="<?=$post->post_id;?>"></i> Like

然后定义这样做来设置回调:

$('.like').click(function() { /* your code here */ });