[英]JQuery get value from dynamically created input by tr
我已经使用JQuery
动态创建了表格,我想获取input
元素的值:
$el.append('<tr data-id='+ data[i].id + ' data-token='+data[i].token + '><td>'+data[i].order+'</td>\n\
<td><input name="qty" id="qty" type="number" value="'+data[i].qty+'" min="1"></td>\n\
......
使用此代码,我可以生成表(这只是代码的一部分)。 我知道如何访问tr标签的值:
$('body').on('click', 'a.link', function(e) {
e.preventDefault();
var tr = $(this).closest('tr'),
id = tr.data('id'), // we have the id
token = tr.data('token'), // we have the token
qty = tr.data('qty'); <------------- this not working
})
如何获得qty
价值?
问题:您的tr
没有data-qty
属性。 此外,表中根本没有data-qty
。
解决方案:在创建表期间,您正在将data[i].qty
分配给input
元素作为值。 因此,您需要读取input
值。 像下面。
qty = tr.find('#qty').val();
注意: Satpal提供了一个有效的观点。 如果根本上是在循环中构建tr
,则不建议将相同的id
分配给所有行中的所有input
元素。 最好删除id
属性,而仅使用name
属性选择元素。 喜欢
tr.find('input[name="qty"]').val();
或tr.find('td:eq(1) input').val()
但是,如果是这种情况,则Satpal给出了正确的答案。
首先,该id
在同一文档中应该是唯一的,因此您可以按以下类别替换id
:
<input name="qty" class="qty" type="number" value="'+data[i].qty+'" min="1">
然后,如果要获取input
值,则可以使用find
和输入的class
,然后是.val()
,因此应为:
qty = tr.find('.qty').val();
希望这可以帮助。
您应将.find()
与Attribute Equals Selector [name =” value”]结合使用。
qty = tr.find('[name=qty]').val();
当您使用id="qty"
动态创建元素时,它将创建无效的HTML。 由于标识符必须唯一。
由于元素的ID是唯一的,因此$('#qty')。val()就足够了。
qty = $('#qty').val();
数量= tr.data('qty'); 这意味着您要访问数据属性,因为您没有“ data-qty”之类的任何数据属性,因此无法访问它。 因此,要么将其设为类或ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.