正常に動作するコードがいくつかありますが、遅くなりすぎています。
HTML:
ul
約 50の要素を含むコンテナーがあります。各ul
要素にはh4
見出しがあり、その後に一連のli
要素が続きます。行要素が表示されていない場合、関数は見出しを非表示にします。
Javascript/jQuery:
function show_or_hide_headings() {
$('#container').children('ul').each(function (i) {
var $this = $(this),
$h4 = $this.children(':first');
if ($this.children('li:visible').length) {
$h4.show();
} else {
$h4.hide();
}
});
}
li
要素の性質を変更するまでは、問題なく動作していました。それぞれli
が で構成されるミニ テーブルになりました<table><tr><td>icon</td><td>text</td></tr></table>
。以前は 0.5 秒未満で処理されていましたが、現在は処理に 2 秒かかります。(この表は、アイコンの下でテキストが折り返されるのを防ぐためにあります。)
セレクターをli
使用して DOM レイヤーを 1 つだけ深くしたため、追加の要素をそれぞれに追加すると DOM 処理が非常に遅くなる理由がよくわかりません。.children
私も試しました:
$('#container').find('h4').each(function (i) {
var $this = $(this);
if ($this.siblings('li:visible').length) {
$this.show();
} else {
$this.hide();
}
});
そして$('#container').children().children('h4')
十分な測定のために。
また注目に値するのは、多くのli
要素が表示されている場合は、表示されている要素が少ない場合よりもはるかに遅くなることです。ただし、非常に迅速に機能したとき (つまり、テーブルが各行に配置される前) よりも多くの行はありません。
どんなアドバイスでも大歓迎ですが、私が持っているよりも多くのコードを投稿するように要求しないでください:)
ありがとう。