JQuery attr总是返回相同的值

时间:2015-12-29 12:42:47

标签: javascript php jquery html

伙计们我有帖子列表,每个帖子都有自己的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

因此,当我尝试从 data-id 脚本获取值时,所有时间都会返回 188 数字。当点击Post 1,post 2,post 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");
    }
},

2 个答案:

答案 0 :(得分:4)

好像你在循环中生成HTML。请记住HTML中的标识符必须唯一,您可以使用CSS类,然后可以使用Class Selector (“.class”)。将HTML修改为

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

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

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

答案 1 :(得分:0)

每个元素都必须具有唯一的id属性。你不能拥有多个ID为&#34;的元素。喜欢。&#34;尝试这样的事情:

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

然后定义执行此操作以设置回调:

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