2009-03-08 8 views
0

が、私はこのようなものになりますaspxページがあります。はJQueryのtbodyの質問ASP.NET

<table runat="server" id="tblTEst"> 
    <tr id="trHeader" runat="server"> 

    </tr> 
    <tr id="trRow1" runat="server"> 

    </tr> 
    <tr id="trRow2" runat="server"> 

    </tr> 
</table> 

は、私はjQueryの秒のカウントを取得言って書き込み、私は実行する必要があります。

alert($('#' + strTableId).children('tbody').children('tr').length); 

私の質問はいつTBODYが追加されるのですか? InnerHTMLを実行すると、TBODYが表示されます。私はこれがASP.NETの何かであるかどうか疑問に思っていましたか?

EDIT お返事ありがとうございます。ブラウザによって追加された場合、JQueryの互換性を保証するために複数のブラウザでコードをテストすることについて心配する必要はありますか?私は印象に残っていた、JQueryはすべてのブラウザと互換性があり、私は別のブラウザでコードをテストすることを心配する必要はありません。

+0

投稿したサンプルコードから、あなたのテーブルにTBODYセクションが追加されたときを言うことは不可能です。ページのソースコードを表示するときに表示されますか?この場合、ASP.NETによって追加されます。それ以外の場合は、クライアント側で追加されます。 –

+0

はい、私はソースでTBODYを参照してください – DotnetDude

+0

2番目の質問に答えるために、jQueryはいくつかのブラウザの違いを抽象化しようとしますが、ブラウザが無効なHTMLを修正する方法を扱うと、マークアップを修正する方が良い。 – Shog9

答えて

1

これは、DOMを構築する際にHTMLをクリーンアップするプロセスの一環として、ブラウザが行うことです。 standard specifiesは、TR要素がTBODY、THEAD、またはTFOOT要素内に存在しなければならず、それらのどれも指定していないので、ブラウザはあなたのために追加することであなたを助けます。の混乱を避けるために、あなたが明示的にTBODYであなたの行をラップするとよいでしょう

alert($('#' + strTableId).find('tr').length); 

...しかし、:あなたはこれを無視したい場合

は、あなたにあなたの式を再書き込みすることができます未来。

2

これはASP.NetでもjQueryでもありません。あなたのブラウザです。 jQueryは、ASP.Netによって生成されたHTMLコードに基づいて、ブラウザによって構築されたページのDOMにアクセスします。テーブルの場合、明示的に宣言されていないときは、テーブルの "本体"行(TR)を保持するためにTBODY要素が追加されます。

1

サーバ側でtbodyを使用してテーブルを正しく構築することが最善の方法です。その後、ブラウザ間の不一致を心配する必要はありません。