0

innerHTML を使用して空の場合に非表示にしているページに最近表示したアイテムを表示する div があるため、外側の空のボックスは表示されず、正常に動作します。問題は、アイテムが表示されるまでページに大きな穴が開いてしまうことです。

私がやろうとしているのは、div id="recentinc" が非表示の場合に別の div を表示することです。これは、div id="recentinc" にコンテンツが含まれると非表示になります。

これまでの私のコードは次のとおりです。

<div id="recentinc"><?php include 'recentview.php'; ?></div>
<script type="text/javascript">
if (document.getElementById('recentinc').innerHTML == '')
    document.getElementById('recently_viewed').style.display = 'none';
</script>
</div>

別のdivが欲しいです。

<div id="copy">more content</div>

div id="recentinc" が非表示の場合に代わりに表示されます。

jQuery でこれを行うより良い方法があるかもしれませんが、答えが見つかりません。

どんな助けでも大歓迎です。

4

3 に答える 3

1

表示を「なし」に設定すると、フローから要素が削除されるため、大きな大きな穴が何であるかはわかりません。で非表示にするのではなく、visibilty を設定してみてください。そうすれば、非表示にdisplay:noneなりますが、同じスペースを占有し、ドキュメント フロー内に残ります。

if (document.getElementById('recentinc').innerHTML == '')
    document.getElementById('recently_viewed').style.visibility = "hidden";

または jQuery:

$("#recently_viewed").css('visibility', $("#recentinc").is(":visible")?'hidden':'visible');
于 2012-08-04T12:58:38.020 に答える
0

これを試して:

<div id="recentinc"><?php include 'recentview.php'; ?></div>
<script type="text/javascript">
if ($('#recentinc').html().length<1)
{
  $('#recently_viewed').hide();
}
</script>
</div>
于 2012-08-04T13:00:36.710 に答える
0

私が理解しているように#copy、 の空に基づいて表示/非表示を行い#recentinc、 に対しては反対のことを行い#recently_viewedます。

var showRecent = $("#recentinc").children().length > 0;
$("#recently_viewed").toggle(showRecent);
$("#copy").toggle(!showRecent);
于 2012-08-04T13:41:25.200 に答える