【发布时间】:2009-11-04 22:36:13
【问题描述】:
在我的 php 应用程序中,我有多个模板组合成一个页面。所以在关于我们的页面上说你的模板应该是这样的
<?php
$this->render("header.php");
?>
my about us page
<?php
$this->render("footer.php");
?>
这只是执行 include() 的一种奇特方式。但是,header.php 有一些通过 jquery 框架在 document.ready 上运行的 javascript,需要 header 的页面也是如此。所以你有这样的东西
<?php
$this->render("header.php"); // has its own $(document).ready
?>
<script type="text/javascript">
$(document).ready(function(){
console.log("test");
});
</script>
my about us page
<?php
$this->render("footer.php");
?>
我遇到的错误是 document.ready 为页面上的每个 document.ready 调用一次。在上述情况下,控制台显示
测试
测试
如果我注释掉 header.php 的呈现,document.ready 会像我想要的那样被调用一次。
除了使用信号量之外,还有更好的方法来防止这种情况吗?我尝试缓冲输出,但这似乎不起作用。
编辑:为每个请求添加最终输出
<script type="text/javascript">
$(document).ready(function(){
// do some javascript like highlighting
// form elements with specific classes
});
</script>
display header here
<script type="text/javascript">
$(document).ready(function(){
console.log("test");
});
</script>
my about us page
display footer
【问题讨论】:
-
这个的 HTML 输出是什么? PHP 几乎可以肯定是无关紧要的?
-
如果您想更改 php 或 javascript 中的某些内容,我不是您的问题。
-
如果你把它放在头文件和正文中,它会被调用两次不是吗?