Jquery最接近元素值

rhfm7lfc  于 2023-06-22  发布在  jQuery
关注(0)|答案(3)|浏览(133)

我试图得到一个表单元素值使用最接近。下面是一些示例代码。

<table>
  <tr>
    <td>Hour <input type="input" value="12" name="data[hour]" class="hour" /></td>
    <td>Minute <input type="input" value="12" name="data[minute]" class="minute" /></td>
    <td><a href="#" class="add-data">Add Row</a></td>
  </tr>
</table>

看到我不能序列化的形式,因为它是一个大的形式的一部分,所以我需要抓住每个输入最接近添加行链接,因为你将能够添加多行。
我试过了

var hour = $(this).closest('.hour').val();    
var hour = $(this).closest('input', '.hour').val();
var hour = $(this).closest('input[name="data[hour]]").val();

有什么想法我可以得到的形式价值观?
先谢谢你了

yx2lnoni

yx2lnoni1#

假设每个tr只有一个.hour元素,这就可以做到:

var hour = $(this).closest('tr').find('.hour').val();

closest将:
获取匹配选择器的第一个祖先元素,从当前元素开始,向上遍历DOM树。
因此,您需要上到tr,并从那里找到.hour后代。

am46iovg

am46iovg2#

关于Karim 79的回答:
.closest()向上移动DOM树,直到找到匹配项。它不适用于同一级别的元素--比如在您的例子中(所有元素都有一个td作为父元素)。
http://api.jquery.com/closest/
要在您的情况下使用closest(),您必须使用(这里有点矫枉过正):

$(this).closest("tr").find(".hour").val();
uplii1fm

uplii1fm3#

$(".addToCart").on('click', function() {
  var item_id = $(this).closest('div').find('#item_id').val();
  var labtest_id = $(this).closest('div').find('#labtest_id').val();
  var vendor_id = $(this).closest('div').find('#vendor_id').val();

  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });
});

相关问题