为什么$(this).find('.receiptId')[i].id报错
时间: 2024-03-19 12:45:21 浏览: 46
$(this).find('.receiptId') 返回的是一个 jQuery 对象,它包含了所有 class 为 "receiptId" 的元素。如果你要获取其中的某个元素的 ID 属性值,应该使用 .eq() 方法,而不是使用数组下标的形式。
例如,如果你想要获取第 i 个 class 为 "receiptId" 的元素的 ID 属性值,可以这样写:
```
var id = $(this).find('.receiptId').eq(i).attr('id');
```
这段代码会先通过 $(this).find('.receiptId') 获取所有 class 为 "receiptId" 的元素,然后使用 .eq(i) 方法获取其中的第 i 个元素,最后使用 .attr('id') 方法获取它的 ID 属性值。
如果你使用 $(this).find('.receiptId')[i].id 的形式,它会把第 i 个元素转换成原生的 DOM 元素,而这个 DOM 元素并没有 id 属性,因此会报错。
相关问题
为啥$(this).find('.receiptId').eq(1).attr('id')获取值为undefined,而$('.receiptId').eq(2).attr('id')可以获取到值
可能是因为$(this)指向的元素中没有class为'receiptId'的元素,或者class为'receiptId'的元素中没有索引为1的元素。而$('.receiptId').eq(2)则是在整个文档中查找class为'receiptId'的元素,并返回第三个元素(索引从0开始),因此可以正常获取到对应的id值。
为什么$(this).find('.matCode')[i].textContent报错
$(this).find('.matCode')[i]返回的是一个DOM元素,而不是一个jQuery对象,因此无法直接调用jQuery对象上的方法和属性。如果想要获取该元素的文本内容,应该使用原生的textContent属性,而不是jQuery提供的方法。因此,正确的写法应该是$(this).find('.matCode')[i].textContent。
阅读全文