我有一个表,它是使用数据库中的数据自动生成的,并使用jquery创建。这是使用以下tr变量创建的,该变量附加到主tbody: 以下是我的代码:
var list = " <tr id='order_no_tr'><td id='order_no_td" + item.documentno + "'>" + item.documentno + "</td><td>" + item.progressstatus + "</td><td>" + newDate + "</td>\n\
<td><button type='button' id='cnfrmd_rcvd" + item.c_order_id + "' class='btn btn-default btn-sm cnfrmd_rcvd" + item.c_order_id + "' >Confirm Received</button>\n\
<input type='hidden' name='order_no_txt' id='order_no_txt" + item.c_order_id + "' value='" + item.c_order_id + "' class='order_no_txt" + item.c_order_id + " btn btn-primary'/>\n\
</td></tr>";
$("#order_no_tbody").append(list);
$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() {
var order_no = this.value;
alert(order_no);
});
现在我想获取名为order_no_txt的html输入名称的值,我尝试通过以下函数访问它但它失败了:
$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() {
var order_no = this.value;
alert(order_no);
});
请告知我如何实现这一目标?
答案 0 :(得分:1)
由于隐藏元素是按钮的兄弟,因此您可以使用关系使用.next()
遍历元素并使用.val()
方法获取其值。
$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() {
var a = $(this).next(':hidden').val();
//Following can also be used
//$(this).closest('td').find(':hidden').val()
alert(a);
});
参考
对于动态创建的元素,您应该学习event delegation。
根据评论点击仅适用于第一条记录,而其他记录则无效。,标识符必须是唯一的。您似乎正在重复使用order_no_tr
作为ID多次,以便预期的行为。
更改
$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() {
});
要
$(".cnfrmd_rcvd" + item.c_order_id).on("click", function() {
});