需要检查与点击元素相关的隐藏输入字段的值(多个具有相同名称)

时间:2015-07-29 01:44:32

标签: javascript php jquery html

标题不清楚,所以让我看看我是否可以解释我在做什么。
我列出了用户'帖子,并有这些帖子的喜欢/评论按钮。

我需要做的是,在单击like按钮(<span>标签)时捕获,然后从隐藏的输入字段中获取post id,并使用它发布到PHP脚本。

在实际向数据库提交之前,PHP正在进行所有检查,如果他们是朋友,隐私级别是否正确等等,但我目前只是在生成javascript / jquery时生成显示了帖子(根据帖子ID命名每个js变量/ DOM元素),但是查看源代码时效率不高且看起来很乱(但是,这是我能让它工作的唯一方法)。

我希望能够使用外部javascript文件来检查何时单击了like按钮,并知道哪些帖子正在被喜欢,并以这种方式工作。

我已经研究了很长一段时间了,而且我的理解是this可能有用,但我没有运气。我使用foreach()循环在一个页面上生成多个帖子,因此元素的名称/ ids /类是相同的。

<小时/> 为了更好地理解,这里有一个帖子可能的样子:

<div class="feedPost">
    <img src="#" class="feedProfile"/>
    <a href="#" class="feedName">FirstName LastName</a>
    <div class="feedPostBody">Hello, world!</div>
    <input type="hidden" value="24772" name="feedPostID">
    <span class="feedLikeButton">Like</span> | <a href="#">Comment</a> | 2 mins ago
</div>

并且,使用javascript / jquery,我希望能够在外部js文件中执行类似的操作:

$('.feedLikeButton').on('click',function(){
  var post_id = 0; //I need to get the ID from the post that the like button is related to.
  //If I just did $('.feedPostID').val() it wouldn't work
  $.post("https://mysite/path/to/like.php", {post: post_id}).done(function(data){
    if(data == "success"){
      //This will set text from "Like" to "Unlike"
      //Again, I can't just do $('.feedLikeButton') to access
      //I guess I could do this.innerHTML? Would still need to access feed post id
    } else {
      //Probably will just flash error to user if error, or something similar
    }
  });
});

1 个答案:

答案 0 :(得分:1)

你应该得到相似的按钮

var likeButton = $(this);

然后拿到它的容器

var container = likeButton.parent();

然后找到隐藏的字段

var idInput = container.find('[name="feedPostID"]');

然后得到它的价值:

var id = idInput.val();

通过所有这些参考,你可以做任何你想做的事。