2011-10-31 77 views
6

给定页面上的许多TABLE标记,我如何在选定的表格上选择childred。如何使用jQuery .each()来查找孩子的孩子?

这是符合逻辑的,但失败,此错误:

Error: uncaught exception: Syntax error, unrecognized expression: [object Object]tr 

我的代码

$(document).ready(function() { 
    var selectedTable = $('table').eq('9'); 

    $(selectedTable).css('border','10px solid green'); 

    $(selectedTable + 'tr td').each(function(i) { 
     $(this).css('border','10px solid blue'); 
    }); 

}); 

回答

6

selectedTable是一个jQuery对象,而不是一个字符串。
你不能在选择器中使用它。

相反,你需要使用jQuery的遍历API:

selectedTable.find('tr td') 
3
selectedTable.find('tr td').each(function(i) { 
     $(this).css('border','10px solid blue'); 
    }); 

你也可以连接类似如下:

selectedTable.css('border','10px solid green').find('tr td').each(function(i) { 
    $(this).css('border','10px solid blue'); 
}); 

而且,你不需要使用$( selectedTable),因为你的选择器已经返回一个jquery对象。

3

使用.find()可以得到桌子的孩子。您遇到的问题是selectedTable不是选择器字符串,而是对象。你不能连接一个对象与一个字符串,这就是为什么你得到你的错误。

这应该很好地工作:

$(document).ready(function() { 
    var selectedTable = $('table').eq('9'); 

    $(selectedTable).css('border','10px solid green'); 

    $(selectedTable).find('tr td').each(function(i) { 
     $(this).css('border','10px solid blue'); 
    }); 
}); 
23
$(selectedTable).find('td').each(function (index, element) { 
    ... 
});