我试图使用find()。val()在jquery数据表中获取动态隐藏输入值,但它返回undefined。如何使它返回输入值?
//foreach instantiate
<input style="display: none;" value="{{$userTable['username']}} - {{$userTable['name']}}" />
//end foreach instantiate
jquery试图获取隐藏输入的值。
$.each($("#datacal_table tr"), function(){
arrTableName.push($(this).find('input').eq(0).val());
});
表的布局
<table id="datacal_table"
class="table table-striped table-bordered" cellspacing="0">
<thead>
<tr>
<th>Username</th>
<th>Type</th>
<th>Name</th>
<th>Computation Sheet Name</th>
<th>Status</th>
<th>Date</th>
</tr>
</thead>
<tbody id="dctbody">
//foreach instantiation
<tr>
<td id="username_table">
{{$userTable['username']}} <br>
{{$userTable['name']}}
<input style="display: none;" value="{{$userTable['username']}}
- {{$userTable['name']}}" />
</td>
......<td> values
<tr>
//end for each
</tbody>
</table>
答案 0 :(得分:0)
您需要找到input
元素,而不是p
标记。虽然此处不需要eq()
方法,因为val()
方法返回第一个元素的值。
arrTableName.push($(this).find('input').val());
// ---^^^^^---
// or more specific to get hidden element
arrTableName.push($(this).find('input:hidden').val());
// ---^^^^^^^^^^^^^---
仅供参考: input
元素是自动关闭的,因此不需要</input>
。
答案 1 :(得分:0)
为了更准确,您应该查找tbody
部分tr
元素,以及input
元素。此外,您不应该寻找p
个元素。
$.each($("#datacal_table tbody tr"), function(){
arrTableName.push($(this).find('input').val());
});
答案 2 :(得分:0)
你可以这样使用
$("#datacal_table > tbody >").each(function(){
arrTableName.push($(this).find('input:hidden').val());
})
使用直接子选择器(>
),您将走过直接后代(而不是所有后代)