jQueryを使用して2つの特定の行の間のテーブル行の数をカウントする
-
03-07-2019 - |
質問
<table>
<tr id="parent_1">
<td>Parent 1</td>
</tr>
<tr class="child">
<td>Child 1</td>
</tr>
<tr class="child">
<td>Child 2</td>
</tr>
...
<tr id="parent_2">
<td>Parent2</td>
</tr>
...
</table>
jQueryを使用してparent_1とparent_2の間の子行の数を調べるにはどうすればよいですか?
編集:申し訳ありませんが、これは単なる例であり、テーブルには任意の数の親行と任意の数の子行を含めることができることを明確にしませんでした
解決
これにより、必要なものが得られます
var childCount = ($('#parent_2').get(0).rowIndex - $('#parent_1').get(0).rowIndex) - 1;
他のヒント
これ:
$('#parent_1 ~ .child:not(#parent_2 ~ *)').size()
翻訳:兄弟であり、後、#parent_1
の兄弟であるクラス child
のすべての要素に一致しますが、 #parent_2
の兄弟であり、後に来る。
頭に浮かんだ最初のアイデア。問題の要素を選択するための精巧な方法があると確信しています($(selector).lengthを実行するだけでよいことを意味します)が、頭の上のものを考えることはできません。
var doCount = false;
var numberOfChildren = 0;
$('tr').each(function(i){
if($(this).is("#parent_2"))
doCount = false;
if(count)
numberOfChildren++;
if($(this).is("#parent_1"))
doCount = true;
});
おそらく最良の方法は手動で数えることだと思います。カウントが完了したことがわかると中断できるため、高速になります(テーブルが巨大な場合に便利です)。
var rowid1 = 'parent_1';
var rowid2 = 'parent_2';
var rows = $("#"+rowid1).parent().find('tr');
var count = 0;
for (var i = 0; i < rows.size(); i++) {
var el = rows.get(i);
// Done counting
if (el.id == rowid2) break;
if (el.id != rowid1) {
++count;
}
}
alert("There are " + count + " rows between");
いくつかの人々はここでいくつかの良い答えを持っています、私はすでに私のもので始めたので、追加情報のためにそれを追加するだけです。
$(document).ready(function() {
n = 0;
var x = new Array(0,0,0);
$("table tr").each(function(i)
{
if($(this).hasClass("child"))
{
x[n] += 1;
}
else
{
n += 1;
}
});
for(var y = 0; y < x.length; y++)
{
alert(x[y]);
}
});
EDIT btw mineは、親の数を気にしません。配列が十分に大きい限りカウントし続けます。
それぞれparent_1とparent_2が開始行と終了行であると仮定します:
$("#parent_1").siblings().size() - 1
所属していません StackOverflow