这是html表单,我希望获得表格的第一个value
标记td
:
<tr class="tr_entry">
<td><input readonly="" name="product_id[]" id="product_id" value="xyz-20" type="text"></td>
<td>
<select id="purpose_id" name="purpose_id[]">
<option value="100"> abc</option>
<option value="115"> abc</option>
<option value="116"> abc</option>
<option value="98"> abc</option>
</select>
</td>
<td><input id="recive_date" readonly="" name="recive_date[]" class="dp"></td>
<td>
<select id="funding_source_id" name="funding_source_id[]">
<option value="1">abc</option>
<option value="2">abc</option>
</select>
</td>
<td><button id="open_modal" type="button" class=" btn btn-primary add_button" data-toggle="modal" data-target="#myModal"><i class="fa fa-plus-square" aria-hidden="true"></i> </button></td>
</tr>
我试过这个但是它在undefined
中给了我alert
。
$(document).on('click','#open_modal',function(){
var vacc = $(this).find('td:first').val();
alert(vacc);
});
以及
var vacc = $(this).parent().siblings(":first").text();
alert(vacc);
答案 0 :(得分:1)
您应该使用:
$(document).on('click','#open_modal',function(){
var vacc = $(this).closest('tr').find('td:first-child input').val();
alert(vacc);
});
.find
仅在当前元素的后代中搜索给定的选择器。
相反,.closest('tr')
会选择当前行,然后您可以搜索相关的td
元素。
此外,您应该使用input
或更具体的内容选择.find('td:first-child input')
元素。但是使用.find('td:first-child')
进行选择只会选择<td>
元素 - 它没有值属性。
答案 1 :(得分:0)
你有很多误解,
第一
td
元素没有您可以val()
html()
功能
第二
var vacc = $(this).find('td:first-child input').val();
上面代码中的 this
引用了行的按钮,因此你可以访问tr行,
您可以使用以下两个不同的代码父和最近,但我的建议是closest
var vacc = $(this).closest('tr').find('td:first').html();
您可以将td
元素文字作为字符串访问,它会显示您的input
html代码<input readonly="" name="product_id[]" id="product_id" value="xyz-20" type="text">
如果要访问输入值,则应使用
var vacc = $(this).closest('tr').find('td:first').find('input').val();