0

私が頭を悩ませているもう1つのjQueryのこと。jQuery を使用してオンとオフを切り替えるいくつかのフローティング div (以下を参照) があります。display:none のスタイルを持たない3 番目の子要素ごとに、いくつかのビットを追加する必要があります。

<div class="ItemList">
    <div class="Item">A</div>
    <div class="Item" style="display:none;">B</div>
    <div class="Item">C</div>
    <div class="Item">D</div>
    <div class="Item" style="display:none;">E</div>
    <div class="Item">F</div>
    <div class="Item">G</div>
    <div class="Item">H</div>
    <div class="Item">I</div>
    <div class="Item" style="display:none;">J</div>
    <div class="Item">K</div>
    <div class="Item">L</div>
    <div class="Item">M</div>
    <div class="Item">N</div>
</div>

私はこれを思いつきましたが、正しくありません!

$(".Item[style*='display: block']:nth-child(3n)").after("<div class='Clear'></div>");

何か案は?!

4

2 に答える 2

2

:visibleセレクターを使用できます:

$(".Item:visible:nth-child(3n)").after("<div class='Clear'></div>");

また:

$(".Item:nth-child(3n):visible").after("<div class='Clear'></div>");

セレクターの順序が重要であることに注意してください。

于 2012-10-23T13:51:15.860 に答える
1

要素を選択する前に、.Itemまたは後で要素をフィルター処理する必要があるかどうかはわかりません。

要素が選択された後。

$(".Item:nth-child(3n)").filter(function(){
     return $(this).css("display") != "none";
}).after("<div class='Clear'></div>");

@undefined にも本当に良い答えがあります。

于 2012-10-23T13:48:50.290 に答える