如何使用jQuery找到最接近的元素

Ste*_*ven 16 jquery

我有以下HTML代码:

<td>
  <input type="text" size="40" value="" name="related_image" id="related_image">  
  <input type="button" class="button addImage" value="Get image url">
</td>
<td>
  <input type="text" size="40" value="" name="alternative_image" id="alternative_image">  
  <input type="button" class="button addImage" value="Get image url">
</td>
Run Code Online (Sandbox Code Playgroud)

我需要找出我点击的按钮,然后将一些文本添加到最近的输入文本字段.
例如,如果我单击第一个按钮<td>,那么我需要在related_image文本字段中输入一些文本.

我已尝试使用followin jQuery,但它不起作用:

jQuery('.addImage').click(function() {
  var tmp = jQuery(this).closest("input[type=text]").attr('name');
  alert(tmp);
});
Run Code Online (Sandbox Code Playgroud)

(我只是检索输入名称以进行测试.)

我想我可能不得不使用find和/或siblings.但我不太清楚如何.

任何帮助赞赏.

编辑

我只是设法使用此代码
addImageEvent = jQuery(this).prevAll("input[type=text]:first")

使用prevAll不好的选择?

cle*_*tus 26

尝试:

var tmp = $(this).siblings(":text").attr("name");
Run Code Online (Sandbox Code Playgroud)

closest()您正在使用的方法找到最近的祖先,这不是您想要的.


Nic*_*ver 5

.closest()找到父母,在这种情况下你需要.siblings(),像这样:

jQuery('.addImage').click(function() {
  var tmp = jQuery(this).siblings("input[type=text]").attr('name');
  alert(tmp);
});
Run Code Online (Sandbox Code Playgroud)

或者,如果格式始终与您的示例一致,请使用.prev(),如下所示:

jQuery('.addImage').click(function() {
  var tmp = jQuery(this).prev().attr('name');
  alert(tmp);
});
Run Code Online (Sandbox Code Playgroud)