私が持っているマークアップの簡単な例を次に示します。
HTML:
<input type="checkbox" name="ex1">
<input type="checkbox" name="ex2">
<ul class="reveal">
<li><a href="#">Hi</a></li>
<li><a href="#">Bye</a></li>
</ul>
<li>
チェックボックスは、特定のタグを持つを削除するためのフィルターとして使用されます。これはすべてうまくいきます。私の問題は、チェックボックスがチェックされ、フィルターロジックが実行されると、 a を使用しdisplay:none
て特定の s を削除し<li>
ますが、フォーマットに使用する css が事後に正しく適用されないことです。たとえば、最初のチェックボックスをクリックすると、最初のチェックボックスが削除さ<li>
れ、「さようなら」<li>
だけが残るとします。それはうまくいきますが、CSS で定義した境界線は、セレクターが一致しなくても存続します。これは私が使用したセレクタです:
CSS:
#columns .calendar td ul.reveal li + li {
border-top: 1px dotted #999;
}
このスタイルは最初は正しく適用されますが、display:none
が適用された後、'bye' li だけが残り、点線の境界線が残ります。
ブラウザ開発者コンソールを使用して確認しましたが、これは実際に境界線を作成するために適用されている唯一のスタイル ルールです。
DOM を再描画しないという行に沿って何かを読みdisplay:none
、ブラウザーに再描画を強制する変数 ($('whatever')[0].offsetHeight のようなもの) にアクセスしますが、これは私の問題を解決していないようです。