【发布时间】:2015-05-09 17:21:28
【问题描述】:
我有一个包含两个文件的程序,一个program.js 和一个program.php。 js 使用 jQuery 并将所有内容包装在 $(document).ready 中,因此一切都在加载 DOM 之后发生。
program.php 正在写一些元素:
printf( "<table>"> );
如何延迟通过 php 创建的元素直到 DOM 加载?它们在 jQuery 创建元素之前生成,我有一些冲突。
我应该将 php 项包装在一个函数中并为其设置延迟吗?
还有更理想的方式吗?感觉不合适
printf("<script>$document.ready(function(){");
//and the rest of elements that I want to delay
编辑:让我想到这一点的最初冲突是 jQuery 文件正在做的事情:
$("#create-booking").button().on("click", function() {
dialog.dialog("open");
});
当 php 正在做的时候:
printf("<button id='create-booking'>Create</button>");
所以事件没有被应用。我的怀疑是 php 元素加载得更快,当它被创建时,jQuery 处理程序还没有时间出现。
【问题讨论】:
-
您必须使用 Ajax,或者按照您的建议将其包装在 $.ready 中。
-
They generate before the jQuery created elements, and I have some conflict也许问这个问题。见XY问题:mywiki.wooledge.org/XyProblem -
PHP 首先在您的服务器上运行。因此,在您的页面模板中运行的任何 PHP 都首先运行,远在浏览器甚至看到页面之前。所以 PHP 创建的元素已经完成并且在任何 $(document).ready()` Javascript 在页面中运行之前在页面中。