2011-10-31 73 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) { 
    ... 
});