Javascript 获取TR之外最近的隐藏值

Javascript 获取TR之外最近的隐藏值,javascript,jquery,html,Javascript,Jquery,Html,当选中行中的复选框时,如何获取类为“OriginalSuggestedQty”的隐藏字段的值 以下是HTML的外观: <input class="OriginalSuggestedQty" type="hidden" value="5"> <tr> <td > <input class="SuggestedQty" id="items_1__SuggestedQty" type="text" value="9">

当选中行中的复选框时,如何获取类为“OriginalSuggestedQty”的隐藏字段的值

以下是HTML的外观:

<input class="OriginalSuggestedQty" type="hidden" value="5">
<tr>
    <td >
        <input class="SuggestedQty" id="items_1__SuggestedQty" type="text" value="9">
        <input checked="checked" class="suggested"type="checkbox" value="true">
    </td>
</tr>

如果HTML在整个页面中具有相同的结构

因此:

我不会使用jQuery(相当繁重的函数,需要大量迭代)来完成这样一个简单的DOM遍历:

只要这样做:

$(".suggested").change(function() {
  if ($(this).is(":checked")) {
      //refer to this, without jQuery wrapper
      var originalVal = $(this.parentElement.parentElement.parentElement.parentElement.previousElementSibling.querySelector("input.OriginalSuggestedQty")).val();
  }
 }
这将通过转到父母(曾祖父母
)选择输入,选择他之前的兄弟
以前的元素同级
(防止选择文本节点),然后使用
查询选择器
选择正确的元素

最后,将其包装在jQuery对象中,以允许执行jQuery忍者

但是,我会使用另一种解决方案:

您的所有输入都有一个
id
项目\u 1\u建议数量
。为什么不给每个输入一个对应的数据id属性:

<input class="OriginalSuggestedQty" data-id="items_1__SuggestedQty"  type="hidden" value="5">

input[data id='”+$(this.prev().attr(“id”)+“]“
此位将选择包含与复选框相邻的输入id匹配的数据属性的元素。这样,元素之间的链接更加健壮。如果将来HTML结构发生变化,则不会破坏连接。

要匹配文章中显示的确切HTML,可以使用以下方法:

$(this).closest('tr').prev()
这将逐步增加,直到到达TR,然后选择前面的DOM元素,即输入。

这是正确的还是在TR和输入之间有其他元素?

发布的HTML无效。还有,您的示例代码失败的地方是什么?您能提供更多的html吗?这就是它的外观。隐藏的输入与tr处于同一级别。我收到以下错误:Uncaught TypeError:无法读取的属性'querySelector'null@user3788671您需要支持哪个版本的IE?@user3788671,您需要将此代码转换为HTML代码,您无法进行一对一复制,因为我们没有完整的HTML代码。谢谢您的尝试。当我使用最新的答案时,该值是一个未定义的值。
<input class="OriginalSuggestedQty" data-id="items_1__SuggestedQty"  type="hidden" value="5">
$(".suggested").change(function() {
    if ($(this).is(":checked")) {
       var originalVal = $("input[data-id='"+$(this).prev().attr("id")+"']").val();
       $(this).closest('tr').find('.SuggestedQty').val(originalVal);
    }
});
$(this).closest('tr').prev()