'未定义'从.each返回,在id上选择了id

时间:2016-01-16 15:16:40

标签: javascript jquery html-table each

问题

我试图遍历表格中具有特定格式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(&#39; data-uid&#39;)。一切都未定义。

<小时/> 其他详情:

为了完整性......我将在每个td之后循环遍历每个td。所以在上面的每个函数中嵌套了以下内容。

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

<小时/> 感谢大家的帮助。

5 个答案:

答案 0 :(得分:2)

在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

答案 1 :(得分:0)

obj是索引,i是您案例的元素。要使data-uid使用data()功能,如下所示。

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

答案 2 :(得分:0)

每种方法:

$(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

});

答案 3 :(得分:0)

注意JQuery each方法:

  

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

$('tr[id^="fixed_user_"]').each(function(index, obj) {

    var id = $(obj).data('uid);

});

答案 4 :(得分:0)

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

$('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'

});