Javascript jQuery:让第二个函数等待执行,直到第一个函数完成
我试图使用Javascript jQuery:让第二个函数等待执行,直到第一个函数完成,javascript,jquery,.when,when-js,donejs,Javascript,Jquery,.when,When Js,Donejs,我试图使用when和done使第二个函数仅在第一个函数执行后运行,但它不起作用。 我在这里想要实现的是: 首先,我使用$(“#jobshome”).load(“jobs/newstjobs.jstoprow”)从外部页面加载div(在同一个域中,这里没有跨域),然后在完全加载后,将运行下一个脚本,它是一个简单的文本滑块。 但是现在外部HTML不再加载到“#jobshome”中 当我不使用这种方法时,我得到的结果是整个外部div将加载到单个滑块中,而这不是我所需要的 如果我像这样使用初始部分,它可
when
和done
使第二个函数仅在第一个函数执行后运行,但它不起作用。
我在这里想要实现的是:
首先,我使用$(“#jobshome”).load(“jobs/newstjobs.jstoprow”)
从外部页面加载div(在同一个域中,这里没有跨域),然后在完全加载后,将运行下一个脚本,它是一个简单的文本滑块。
但是现在外部HTML不再加载到“#jobshome”中
当我不使用这种方法时,我得到的结果是整个外部div将加载到单个滑块中,而这不是我所需要的
如果我像这样使用初始部分,它可以工作,但不符合预期:
$(function(){$("#jobshome").load("jobs/newest-jobs .js-toprow");});
$(function(){
//rotation speed and timer
我的代码如下:
jQuery(文档).ready(函数($){
$.when(函数(){
$(“#jobshome”).load(“jobs/newst jobs.js toprow”);
}).done(函数(){
//转速和定时器
var速度=3000;
var run=设定间隔(旋转、速度);
var slides=$('.js toprow');
var容器=$(“#jobshome”);
var elm=container.find(':first child').prop(“标记名”);
var item_height=container.height();
var previous='prevabc';//上一个按钮的id
var next='nextabc';//下一步按钮的id
slides.height(item_height);//将幻灯片设置为正确的像素高度
container.parent()高度(项目高度);
container.height(slides.length*item_height);//将幻灯片容器设置为正确的总高度
container.find(elm+':first')。before(container.find(elm+':last'));
重置幻灯片();
//如果用户单击了prev按钮
$(“#按钮ABC a”)。单击(函数(e){
//滑动项目
if(container.is(':animated')){
返回false;
}
如果(e.target.id==上一个){
container.stop().animate({
“顶部”:0
},1500,函数(){
container.find(elm+':first')。before(container.find(elm+':last'));
重置幻灯片();
});
}
if(e.target.id==next){
container.stop().animate({
“顶部”:项目高度*-2
},1500,函数(){
container.find(elm+':last')。after(container.find(elm+':first'));
重置幻灯片();
});
}
//取消链接行为
返回false;
});
//如果鼠标悬停,请暂停自动旋转,否则将其旋转
container.parent().mouseenter(函数(){
清除间隔(运行);
}).mouseleave(函数(){
运行=设定间隔(旋转、速度);
});
函数resetSlides(){
//并调整容器,使电流在框架中
container.css({
“顶部”:-1*项目高度
});
}
});
});
//单击下一个链接的简单函数
//计时器将调用此函数,旋转将开始
函数rotate(){
jQuery('#nextabc')。单击();
}
旋转木马{
位置:相对位置;
宽度:60%;
保证金:0自动;
}
#幻灯片ABC{
溢出:隐藏;
位置:相对位置;
宽度:100%;
高度:250px;
}
#面剂量{
列表样式:无;
宽度:100%;
高度:250px;
保证金:0;
填充:0;
位置:相对位置;
}
#slidesabcdef{
宽度:100%;
高度:250px;
浮动:左;
文本对齐:居中;
位置:相对位置;
字体系列:拉托,无衬线;
}
/*上一个和下一个按钮的样式*/
B.btn barabc{
最大宽度:346px;
保证金:0自动;
显示:块;
位置:相对位置;
顶部:40px;
宽度:100%;
}
#纽顿斯巴克{
填充:0 5px 0;
浮动:对;
}
#纽扣ABC a{
文本对齐:居中;
显示:块;
字体大小:50px;
浮动:左;
大纲:0;
边际:0.60px;
颜色:#b14943;
文字装饰:无;
显示:块;
填充:9px;
宽度:35px;
}
答:悬停,
a#下一步:悬停{
颜色:#FFF;
文本阴影:.5px0px#b14943;
}
为什么不使用
load()
函数的回调
$("#jobshome").load("jobs/newest-jobs .js-toprow", () => {
//do stuff after loading the html
});
当
不起作用时,因为它需要一个承诺
或延迟
对象,如果两者都不存在,则它将传递的值视为已解析的延迟
(这基本上意味着它不等待,而是执行,然后
/立即完成)。您想过使用全局标志吗。您可以使用if语句查看状态是否存在为true或false。我一直在使用它,它对我来说很有用代码>在每个函数中查看是否一切正常。只有第二个函数是。您是否尝试过使用.then而不是.done。是的。它仍然不起作用。=>
的含义是什么?箭头函数,您不妨将()=>
替换为函数()。但是我再也没有幻灯片循环了。我不知道你说的“幻灯片循环”是什么意思,但是你把内容加载到回调函数后需要运行的所有代码都放好了吗?Uncaught DOMException:无法在节点上执行'insertBefore':新的子元素包含父元素。