我有一个函数,我调用将从php文件返回的html加载到div中。一旦将html放在div中,我希望它为显示div的colorbox调用jquery函数。我遇到的问题是在html实际放入div之前执行回调。当html实际完全放入div时,有没有办法让jquery运行一个函数,而不是刚刚完成执行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"});
});
答案 0 :(得分:0)
更好的方法是实际使用$.ajax()。这将打开你的方法,如ajaxStart,ajaxStop,完成,错误,成功等。使用.load()拉动$ .ajax(),所以你也可以给自己带来它所带来的所有好东西。
答案 1 :(得分:0)
您可以下载到$.get
或$.ajax
并在调用彩盒之前自行插入HTML,从而验证它是否已发生。
function viewDetails(vinNum) {
$.ajax({
url: '/actions/myfile.php',
data: { var: myVar },
success: function(html) {
$('#detailsContainer').html(html);
$('.example3').colorbox ...
}
});
}
答案 2 :(得分:0)
我原以为php不太可能在获取数据之前回复某些HTML,但它还取决于你在脚本中回显数据的位置。
说过我也发现.load()有问题,但我没有花足够的时间试图找出原因。我的问题略有不同,因为我想在页面上动态创建元素。
等一下该死的你们这些人很快......参见T Stone的回答
答案 3 :(得分:0)
不,在内容实际加载后回调正在执行,但是如果元素是动态加载的,那么你尝试使用的插件(colorbox)可能不起作用。
验证这一点的最佳方法是尝试提醒来自已加载部分的内容,例如:
console.log($('.example3').html());
如果它显示了元素内容,那么当回调被触发并且唯一的罪魁祸首是colorbox时,内容将被加载并通过DOM访问。
为了演示load()
的回调确实在加载的内容实际附加到DOM之后触发,这是一个小的演示:
http://jsfiddle.net/3ZAQB/1/