1番目のセルと最後の3の間のテーブルから行番号が不明(変更)になります。それぞれjQueryを使用しています。なぜ$(this).lengthがインデックスの全長を与えないのかを知っている。それぞれのインデックスの合計長さを取得する
のjQuery:
$("#parent table:first tr").each(function(i){
var goodlng = $(this).parent().children("tr").length -1; //this works
var badlng = $(this).length -1; //this doesn't! (always == -1)
});
はgoodlng
をお勧めしますか?それは親に行って子供に戻らなければならないようなハックのようだ。 ここにはjsfiddle(console.log()を持っている)があります。
例HTML:
<div id="parent">
<table>
<tr>
<td>unwanted 1</td>
</tr>
<tr>
<td>wanted!</td>
</tr>
<tr>
<td>unwanted2</td>
</tr>
</table>
</div>
TL; DR:なぜ、各関数の内部ではない$(this).length == $(this).parent().children("tr").length
ありません。これを行うもう一つの良い方法があります。
whoopsは行感謝!私は前に '兄弟()'を試みたが、 'andSelf()'については知らなかった。それはより良い練習ですか?それとも本当に重要なのですか? – mazlix
@ mazlix:私はちょうど私の答えを更新しました。 'table'への参照を保持し、' rows'プロパティの 'length'を取得することで、jQueryを使用するオーバーヘッドをなくすことができます。これははるかに高速になります。 – user113716
...行が何らかの操作をしなければならないと仮定します。そうしないと、 '.each()'の外側で量をキャッシュする方が良いでしょう。 – user113716