我有以下代码:
$(".budget-channel-table").each(function() {
//get table
var table = $(this);
//create an array to hold the auto calculated widths of each element
var thWidthsArr = [];
var calcWidth = 0;
$(table + " th").each(function() {
calcWidth = $(this).css("width");
thWidthsArr.push(calcWidth);
});
});
我不明白为什么我一直在我的控制台中收到此错误:
Uncaught Error: Syntax error, unrecognized expression: [object Object] th
答案 0 :(得分:1)
替换此行:
$(table + " th").each(function() {
有了这个:
$("th", this).each(function() {
或者使用find方法:
$(table).find('th').each(function() {
答案 1 :(得分:1)
您需要使用find()。 table
是一个jQuery对象,所以当你在字符串连接中使用它时,它会创建像[object Object] th
这样的选择器,这是一个无效的选择器,因此就是错误。
table.find("th").each(function() {
calcWidth = $(this).css("width");
thWidthsArr.push(calcWidth);
});
答案 2 :(得分:1)
table
是一个jquery对象,这里是你如何直接用作搜索的上下文。如果您以后不需要this
,也可以使用table
。
$("th", table)
答案 3 :(得分:1)
使用.find()
获取对象的子项
$(table).find("th").each(function() {
calcWidth = $(this).css("width");
thWidthsArr.push(calcWidth);
});
答案 4 :(得分:1)
因为table已经是一个jquery元素了。把它改成这个
table.find("第&#34)......
$(".budget-channel-table").each(function() {
//get table
var table = $(this);
//create an array to hold the auto calculated widths of each element
var thWidthsArr = [];
var calcWidth = 0;
table.find("th").each(function() {
calcWidth = $(this).css("width");
thWidthsArr.push(calcWidth);
});
});
答案 5 :(得分:0)
将您的代码写在.find
中,如下所示:
table.find("th").each(function() {
calcWidth = $(this).css("width");
thWidthsArr.push(calcWidth);
});
了解更多信息:
http://api.jquery.com/find/