無視: http://jsfiddle.net/gulcoza/9cVFT/1/
更新されたフィドル: http://jsfiddle.net/gulcoza/9cVFT/4/
コード全体は上記のフィドルにありますが、ここでも説明します。
HTML
<ul>
<li id="e1">1</li>
<li id="e2" class="hidden">2</li>
<li id="e3">3</li>
<li id="e4" class="hidden">4</li>
<li id="e5">5</li>
<li id="e6">6</li>
<li id="e7">7</li>
<li id="e8">8</li>
<li id="e9">9</li>
<li id="e10">10</li>
</ul>
jQuery
console.log(
$('ul li:visible:nth-child(4n)')
);
期待される結果: li#e6, li#e10
- なぜ? 目に見えるものからのみ4n要素が必要だからです。
しかし
実際の結果:表示されている場合にのみ、すべてから 4n 要素を取得します。
console.log(
$('ul li:visible').filter(function(index) {
if ((index + 1) % 4 ==0) return true;
})
);
次のソリューションよりも優れたソリューションに興味があります。
console.log(
$('ul li:visible').filter(function(index) {
if ((index + 1) % 4 ==0) return true;
})
);
更新されたフィドル:
http://jsfiddle.net/gulcoza/9cVFT/4/
なぜ4番がうまくいかないのですか?フィルターが呼び出された時点で、結果は既にフィルター処理されているはずです。:|
// 4 - could be a nice solution
console.log(
$('ul li:visible').filter(':nth-child(4n)')
);
なぜこれが機能しないのですか?現時点$('ul li:visible')
では、目に見えるものだけが利用できるはずです。