确定在jquery中一组相似元素中单击了哪个元素

时间:2018-10-21 10:57:34

标签: javascript jquery html

我有一个包含帖子的HTML页面。

帖子的定义是:

<div class="post">
  <p>...</p>
  <a href="#" class="post-react">Like</a>
  <input type="hidden" name="post-id" value="[postid]">
</div>

一个页面可以包含许多此类帖子。 当我单击“赞”时,如何检测单击了哪个帖子元素的“赞”按钮?

我在jquery中尝试过此操作

$(function() {
    $('.post-react').bind('click', function() {
      $.getJSON('...', {
        post_id: $('input[name="post-id"]', this).val()
      }, function(data) {
         //something
      });
      return false;
    });
});

1 个答案:

答案 0 :(得分:3)

$('input[name="post-id"]', this)正在寻找一个this的后代输入,但该输入不在<a>内,而是同级

改为使用next()siblings()或遍历post并使用find()

post_id: $(this).next().val()
// OR
post_id: $(this).siblings('input[name="post-id"]').val()
// OR
post_id: $(this).closest('.post').find('input[name="post-id"]').val()

请注意,bind()是一种非常老的方法,已被on()取代