问题
我试图遍历表格中具有特定格式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) {
<小时/> 感谢大家的帮助。
答案 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() );
}
的完整示例
答案 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'
});