javascript - jQuery 方法不适用于附加数据和委托
问题描述
我有这个表体:
<tbody class="resultado" id="lista">
</tbody>
然后我使用“填充”它
$('.resultado').html(data);
'data' 变量来自 Ajax。其中一列是
<td>
<div class="qtd" style="width: 60px;">
<input id="qtd{{$produto->id}}" type="text" class="form-control" name="quantidade" >
</div>
</td>
这个输入,当我按下回车键时,调用这个方法:
$(document).on('keyup','.qtd' ,function(event)
{
var tecla = event.which;
if (tecla === 13) {
event.preventDefault();
var value = $(this).attr("value");
var row = $(this).closest('tr');
var columns = row.find('td');
}
如果我使用 foreach 静态填充 tbody 它可以工作,但是当我使用 html() 方法动态创建它们时它不起作用。
var value = $(this).attr("value");
即使我正在使用事件委托,也会导致未定义或垃圾,或者是吗?谢谢
添加了片段。目标是在输入框中键入一个值并将其显示在警报上
//Enter
$(document).on('keyup','input' ,function(event)
{
var tecla = event.which;
if (tecla === 13) {
event.preventDefault();
// var value = e.target.getAttribute('value');
var value = $(this).attr("value");
alert (value);
var row = $(this).closest('tr');
var columns = row.find('td');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table table-striped">
<thead class="thead-dark">
<th class="w-50">Material</th>
<th>Unidade</th>
<th>Estoque</th>
<th class="w-25">Preço</th>
<th>Qtd</th>
</thead>
<tbody class="resultado" id="lista">
</tbody>
<script>
data = '<tr><td>nome</td><td>unidade</td><td><div class="qtd" style="width: 60px;"><input id="qtd{{$produto->id}}" type="text" class="form-control" name="quantidade" ></div></td></tr>';
$('.resultado').html(data);
</script>
解决方案
您应该绑定输入,并且不应该读取 attr 来获取值。
$("#lista").on('keyup', '.qtd input', function(event) {
var tecla = event.which;
if (tecla === 13) {
var input = $(this)
event.preventDefault();
var value = input.val();
var row = input.closest('tr');
var columns = row.find('td');
console.log(value);
}
})
var data = new Array(5).fill('<tr><td class="qtd"><input/></td></tr>').join('');
$('.resultado').html(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody class="resultado" id="lista">
</tbody>
</table>
推荐阅读
- excel - 找到最后一个匹配后,如何使循环停止
- swift - 在 iOS14 中实现 AutoFill Credential Provider Extension
- python - PyInstaller 输入文本未显示
- docker - Docker buildx mulitarch armv6
- html - scroll-snap 跳过小屏幕上的部分 - Chrome
- java - Java HttpClient 请求返回 403 状态,而邮递员返回预期的响应
- javascript - 使用画布内部外部链接的视频元素将fabricjs录制为视频
- python - 如何使用经纬度获取用户当前位置
- swift - 在 iOS 14 中获取 Font.Weight
- alexa-skills-kit - 我可以创建一个自定义广播技能来在 alexa 中播放广播电台吗