2011-10-31 5 views
6

ページ上に多くのTABLEタグがあると、選択したテーブルでTD子を選択する方法を教えてください。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'); 
}); 

また、あなたは$を(使用する必要はありませんセレクタが既にjqueryオブジェクトを返すので、selectedTable)を再度呼び出します。

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) { 
    ... 
}); 
関連する問題