【发布时间】:2011-04-28 14:10:23
【问题描述】:
我有一个函数,我调用它来将从 php 文件返回的 html 加载到 div 中。将 html 放入 div 后,我希望它为显示 div 的颜色框调用 jquery 函数。我遇到的问题是回调是在 html 实际放入 div 之前执行的。有没有办法让 jquery 在 html 实际上完全放入 div 时运行函数,而不是在它刚刚完成执行 php 时?
函数长这样……
function viewDetails(vinNum){
$('#detailsContainer').load('/actions/myfile.php?var='+myVar,function(){
$(".example3").colorbox({transition:"elastic", speed:"100", inline:true, href:"#hiddenModalContentbox"});
});
}
问题是回调在实际完成将 html 放入 div 之前被调用。这可能是由于 php 在等待 mysql 为其提供所需数据时输出了一些 html 造成的吗?如果是这样,我应该检索所有数据并一次回显所有 html 吗?
编辑: 这是我现在尝试过的,结果相同。我还在正在加载的 php 文件中添加了一个 javascript 警报。在回调调用颜色框之后调用警报。
function viewDetails(myVar) {
$.ajax({
url: '/actions/myfile.php',
data: 'var=' + myVar,
success: function(html) {
$('#detailsContainer').html(html);
},
complete: function(){
$(".example3").colorbox({transition:"elastic", speed:"100", inline:true, href:"#hiddenModalContentbox"});
}
});
}
EDIT FINAL:我发现颜色框从一开始就被错误地调用了。我从别人那里继承了一些代码,我认为它设置正确。我所要做的就是删除 (".example3") 类调用,它工作得很好。该类调用将该方法附加到与该类的任何链接,因此在回调完成之前调用它。回调所做的只是将 colorbox 方法重新分配给具有该类的项目。我所有的漫无边际可能会让事情变得像泥巴一样清晰,但感谢大家的投入。这是最后的工作电话......
$('#detailsContainer').load('/actions/myfile.php?var='+myVar,function(){
$.colorbox({transition:"elastic", speed:"100", inline:true, href:"#hiddenModalContentbox"});
});
【问题讨论】:
-
你的说法是错误的,回调发生在html实际放入目标元素时,见jsfiddle.net/3ZAQB/1加载内容背后的技术根本无关紧要。 jQuery 不关心它是否是 PHP 以及脚本中是否有任何 MySQL 连接。它所看到的只是一个提供 HTML 的 URL。如果交付了一些 HTML,则意味着 PHP 已经完成了它的生成。交付可能需要 10 秒,回调将在这 10 秒后触发(+ 附加它所需的几微秒)。
-
sdology - 我明白文件准备好了。问题是我没有加载整个页面,我正在从 php.ini 加载一大块 html。据我所知,没有为此目的准备好的文件应用程序。
-
ready事件确实和你的问题无关。
-
我想我现在看到了问题所在。我从其他人那里继承了其中的一些代码,并且我认为它已正确实现。现在我看到 colorbox 调用从一开始就被错误地附加了。看来我必须返回并编辑颜色框源以使其与我的实现一起使用。
标签: jquery