0

default.ctp レイアウトでいくつかの要素を使用しています。

echo $this->element('messagesDialog');
echo $this->element('manualpDialog');

それらはいつでも利用できるように私のレイアウトに属しています。私の .js では、ドキュメントの準備ができたらこれらの要素を非表示にします。

$('#dialog-messages').hide();

問題は、これらの要素 (テーブルを含む単なる div など) がページの読み込み時に部分的に表示され、見苦しくバグがあることです。私の要素はレイアウト上にあるため、ユーザーが表示するホームページに簡単に表示されることに注意してください。

これらの div が半表示にならないようにするために、必要に応じて何らかの方法で「作成」し、後で破棄したいと考えています。(私はjqueryを使用しています)。

以下の解決策 ( How can I make the browser wait to display the page until it's full loaded?から) は、私の default.ctp が要素とスクリプト コードでかなり混み合っているため、使用するのが難しいです。単一のdiv。

<body>
<div id="msg" style="font-size:largest;">
<!-- you can set whatever style you want on this -->
Loading, please wait...
</div>
<div id="body" style="display:none;">
<!-- everything else -->
</div>
<script type="text/javascript">
$(document).ready(function() {
    $('#body').show();
    $('#msg').hide();
});
</script>
</body>

解決策は、次のような要素を持つことだと思います

echo $this->element('messagesDialog'); 

適切な場合 (ユーザーが自分のメッセージを見たい場合) にのみレイアウトにロードされ、インスタンス化された後にページが読み込まれるときに半表示にならないように、可能であれば削除されます。

これを達成する方法についてのアイデアはありますか?

どうもありがとう!

4

1 に答える 1

1

要素が必要ない場合は、要素をロードしないでください。代わりに、コントローラ名とアクション名に基づいて要素をロードする IF 条件をレイアウト ファイルに作成します。セッションでユーザーを追跡している場合は、IF をセッション変数に基づいて作成することもできます。

または、次のように単純に要素を div に入れることもできます。

<div class="hiddenClass" style="display: none;">
<?php echo $this->element('messagesDialog'); ?>
</div>

次に、JavaScript セクションで次を使用します。 $('.hiddenClass').show();

于 2013-02-13T01:55:54.053 に答える