为啥$(this).find('.receiptId').eq(1).attr('id')获取值为undefined,而$('.receiptId').eq(2).attr('id')可以获取到值
时间: 2023-09-14 17:07:20 浏览: 129
可能是因为$(this)指向的元素中没有class为'receiptId'的元素,或者class为'receiptId'的元素中没有索引为1的元素。而$('.receiptId').eq(2)则是在整个文档中查找class为'receiptId'的元素,并返回第三个元素(索引从0开始),因此可以正常获取到对应的id值。
相关问题
$(this).find('.receiptId').eq(0).attr('id')获取的值为undefined,怎么处理
出现这种情况可能是因为找不到class为`receiptId`的元素或者找到的元素中不存在`id`属性。可以通过以下步骤来处理:
1. 确保页面中存在class为`receiptId`的元素,可以通过`console.log($(this).find('.receiptId').length)`来检查是否找到了元素。
2. 确保找到的元素中存在`id`属性,可以通过`console.log($(this).find('.receiptId').eq(0).attr('id'))`来检查元素是否包含`id`属性。
3. 如果元素中确实不存在`id`属性,可以尝试修改代码或者页面结构,以确保元素中包含`id`属性。
4. 如果元素不存在,可以通过添加元素或者修改代码来解决问题。
总之,需要根据具体情况来进行处理,确保代码能够正常运行。
为什么$(this).find('.receiptId')[i].id报错
$(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 属性,因此会报错。
阅读全文