3

特定のクラス内の tr 内の最初の td にクラスを追加しようとしています。しかし、何らかの理由で、このクラスを最初の tr の最初の td にのみ追加します。各 tr の最初の td には追加しません。

$("#appendTD").find("#gridFormInformation").children(0).children().each(
                function() {
                    if ($("#appendTD").find('tr').filter(function() { return $(this).attr('class') == 'ui-widget-content ui-subtblcell'; }).children("td:eq(0)").addClass("leftbord"));
                }
            );

しかし、「td:eq(0)」を削除して上記を変更すると、このクラスが各 tr の各 td に追加されます。

以下のマークアップの例

<td id="appendTD">
  <table id="gridFormInformation">
    <tbody>
      <tr><th>1</th><th>2</th><th>3</th></tr>
      <tr class="ui-widget-content ui-subtblcell"><td>1</td><td>2</td><td>3</td></tr>
      <tr class="ui-widget-content ui-subtblcell"><td>1</td><td>2</td><td>3</td></tr>
      <tr class="ui-widget-content ui-subtblcell"><td>1</td><td>2</td><td>3</td></tr>
    </tbody>
  </table>
</td>
4

3 に答える 3

5

クラスを追加したいtdsを見つけるために複雑な手動の方法を使用しているように見えます。jQueryセレクターを使用してtdsを見つける方が簡単だと思います。

交換

$("#appendTD").find("#gridFormInformation").children(0).children().each(
            function() {
                if ($("#appendTD").find('tr').filter(function() { return $(this).attr('class') == 'ui-widget-content ui-subtblcell'; }).children("td:eq(0)").addClass("leftbord"));
            }
        );

$("#gridFormInformation tr.ui-widget-content.ui-subtblcell").find("td:first").addClass("leftbord");

これにより、すべての tr が検出され、各 tr について最初の td が検出され、それにクラスが追加されます。

于 2009-06-03T14:28:58.643 に答える
2

このメソッドは、テーブルの各行のleftbord最初に追加します。<td>gridFormInformation

$('#gridFormInformation tr td:first-child').addClass('leftbord');
于 2012-10-21T15:52:27.160 に答える
2

に変更'td:eq(0)'td:first'ます。

于 2009-06-03T14:28:23.730 に答える