从 .each 返回的“undefined”在 T 上运行,并选择了 ID

'undefined' returned from .each ran on tr with id selection

本文关键字:运行 选择 ID 返回 each undefined      更新时间:2023-09-26

>问题

我正在尝试运行具有特定格式 id 的表中的每一行。选择了正确的行数,但每当我尝试从 obj 获取属性时,我都会遇到"未定义"的问题。

<tr class="" data-uid="45" id="fixed_user_45">...

还有JavaScript...

$('tr[id^="fixed_user_"] ').each(function(obj, i) {
var id = $(obj).id; // returns 'undefined'
console.log(id); //prints 'undefined' the correct number of times
});

无论我尝试选择什么属性以及如何去做,都会发生这种情况 - 即innerText,innerHTML,.attr('data-uid')。所有这些都是未定义的。


其他细节:

为了完整起见...我将循环浏览每个 td,因此在上面的每个函数中嵌套了以下内容。

$('td').each(function (obj, i) {


谢谢大家的帮助。

在javascript片段中,参数顺序错误

.each(function(obj, i) {

正确的顺序是

.each(function(i, obj) {

然后你必须调用jQuery .attr()函数来获取id。

$(obj).attr('id')

但是,您可以不获取任何参数(如果您不需要索引)并将this用作当前对象。

$(this).attr('id');

要看到它的工作,请转到此jsfiddle https://jsfiddle.net/zv6guhzn/1/如果你想循环浏览嵌套的td,我建议使用比一般选择器$()更快的.find(),因为它从选定的开始搜索嵌套元素。

$(obj).find('td').each(itd, objtd){
    console.log( $(objtd).text() );
}

嵌套循环的完整示例 https://jsfiddle.net/zv6guhzn/2/

来源 https://api.jquery.com/each/#example-2

obj

索引,i是你的案例的元素。要获得data-uid请使用如下所示data()函数。

$('tr[id^="fixed_user_"] ').each(function (obj, i) {
     var id = $(i).data('uid'); 
     console.log(id); 
});

每个方法:

$(array/object).each(function(index,object){});

法典:

$('tr[id^="fixed_user_"] ').each(function(i, obj) {
var id = obj.id; // returns 'undefined'
console.log(id); //prints 'undefined' the correct number of times
});

注意JQuery each方法:

.each( 函数 )
功能类型:函数(整数索引,元素元素)一个函数 为每个匹配的元素执行。

$('tr[id^="fixed_user_"]').each(function(index, obj) {
    var id = $(obj).data('uid);
});

可以使用以下代码获取所需的结果。

$('tr[id^="fixed_user_"] ').each(function() {
  console.log($(this).attr('id'));  //return each id
  console.log($(this).attr('data-uid'));// returns 'data-uid'
  console.log($(this).data('uid'));// also returns 'data-uid'
});