0

次のテーブル レイアウトのwindows-detail-spec-label2 つのクラスの間のすべての数を取得する必要があります。その数を使用して、さまざまな画面サイズでテーブルを再配置できます。windows-detail-spec-group

正しい数を得るにはどうすればそれらを数えることができますか?

要素の最初のセットについては、間に2 回出現するため、次のようにする必要があります (注: 次2は2 番目にあります) 。windows-detail-spec-labelwindows-detail-spec-group.row-label tr

テーブル HTML レイアウト

私の現在のコード:

$('.windows-details-spec-group').each(function () {

  var rowspanCount = $(this).nextUntil('.windows-details-spec-group').filter('.windows-details-spec-label').length;

  $(this).unwrap().next('tr.row-default').prepend(this);
  $(this).attr({
      colspan: 1,
      rowspan: rowspanCount  // need this variable to be correct
  });
});

したがって、基本的には、DOM のどこにいても、 2 つの要素の間にクラスが出現する回数を数える必要があります。

4

2 に答える 2

2

関心のあるポイントの近くのDOMの構造に関して、いくつかの追加の合理的な仮定を立てる必要があるように思えます-「DOMのどこに関係なく」は一般的すぎて、実際に適切に実装するのに非常に苦労するでしょう. .

td.windows-details-spec-groupanyがその親行の唯一の子であり、 for も同じであると仮定するとtd.windows-details-spec-label(これは確かにここに当てはまるようです)、次のように実行できます。

$('.windows-details-spec-group').each(function () {
    var rowspan = $(this)
                  .closest("tr")
                  .nextUntil("tr:has(.windows-details-spec-group)")
                  .find(".windows-details-spec-label")
                  .length;
});
于 2013-01-16T14:15:10.363 に答える
1
        $('.windows-details-spec-group').each(function () {

          var rowspanCount = $(this).nextUntil('.windows-details-spec-group').find(".windows-detail-spec-label").length;

          $(this).attr({
              colspan: 1,
              rowspan: rowspanCount  // need this variable to be correct
          });
        });

デモはこちらhttp://jsfiddle.net/NNfmS/

于 2013-01-16T14:19:25.477 に答える