使用$(..)时“无法识别的表达式:[object Object]”

时间:2014-09-09 09:04:24

标签: jquery

我有以下代码:

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

6 个答案:

答案 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/