jQuery的.prev在许多div上有一个'click'事件处理程序?

时间:2015-12-12 02:37:39

标签: jquery

我在下面的代码中简化了我的问题,但在下面的示例中,我无法按照我需要的方式使.prev工作。它只抓取第一个值,而不是与<button>所在位置对应的值。

任何帮助?

<h1>-</h1>

<div>
  <input type='hidden' value="value_1">
  <button class="delete">1</button>
</div>

<div>
  <input type='hidden' value="value_2">
  <button class="delete">2</button>
</div>

<div>
  <input type='hidden' value="value_3">
  <button class="delete">3</button>
</div>

我的JS:

var value = $('.delete').prev('input[type=hidden]').attr('value');

$('.delete').click(function() {
  $('h1').text(value);
});

Non-working Fiddle

1 个答案:

答案 0 :(得分:3)

您需要获取点击的元素的上一个元素。在Build Service Accounts事件处理程序中,click引用所点击的this元素,因此使用.delete

Updated Example

$(this).prev('input[type=hidden]')

当您在$('.delete').click(function() { var value = $(this).prev('input[type=hidden]').attr('value'); $('h1').text(value); }); 事件处理程序之外使用$('.delete').prev('input[type=hidden]').attr('value')时,您获得了第一个匹配元素的click属性。