Jquery 未定义在具有值的元素上循环给定值
页面加载完成后,我将查找包含id为“check_status”的元素(数字输入字段)的表格单元格。然后我对它们进行循环(示例简化为console.log) 咖啡脚本Jquery 未定义在具有值的元素上循环给定值,jquery,coffeescript,Jquery,Coffeescript,页面加载完成后,我将查找包含id为“check_status”的元素(数字输入字段)的表格单元格。然后我对它们进行循环(示例简化为console.log) 咖啡脚本 ready = -> $('td').find('#check_status').each (i, el) => console.log el.val() return $(document).ready(ready); $(document).on('page:load', ready); HTML
ready = ->
$('td').find('#check_status').each (i, el) =>
console.log el.val()
return
$(document).ready(ready);
$(document).on('page:load', ready);
HTML
<td>
<div>
<input type="number" value="1" name="check[status]" id="check_status">
</div>
</td>
<td>
<div>
<input type="number" value="0" name="check[status]" id="check_status">
</div>
</td>
<td>
<div>
<input type="number" value="2" name="check[status]" id="check_status">
</div>
</td>
$('td').find('check_status')的Console.log提供了我正在查找的所有元素,但是el.val()的Console.log提供了“el未定义”。为什么?Id应该是唯一的。您应该将
id=“check_status”
更改为class=“check_status”
,并将选择更改为find('.check_status')
您是否尝试了内置功能的.each()
像这样:$('td').find('#check_status').each (function (i, el){
console.log (el.val())
});
罪魁祸首最终是以下(片段): 不太清楚为什么这会导致ready函数中的each失败,但当我改用以下方法时,它工作正常:
$(document).ready ->
... function contents ...
ID在文档上下文中必须是唯一的,
el
是DOM节点,而不是jq对象。使用el.value
或$(el.val()
或使用this
但不使用el.val()
“el未定义”
哪个浏览器会出现此错误,因为情况并非如此<代码>el已定义,但val
属性不是彩色的。谢谢,我完全忽略了唯一的ID。我使用的是Rails,这些重复ID是因为每个输入字段都是以单独的形式生成的。我会在ID中添加一些唯一的标识符,然后返回到这里。这是真的,但这与此处的问题无关。el
是一个DOM节点。仅供参考,OP已经在使用每个循环,使用coffescript syntax,因此,也许他可以使用$(this).val()
$(document).ready ->
... function contents ...