我试着做
myfun(params,
function(){
//something happen
}
);
但它不起作用,我绝对不知道为什么,而且我会发疯。 几个星期后我仍然在解决一个问题,我需要一个真正的帮助,因为我不太擅长Jquery语法。
我想要达到的目标是: 启动一个功能,检查你是否在一个圆圈区域内盘旋,如果你没有触发一系列功能,一个接一个(在这种情况下显示一系列动画)。而且我不能“一个接一个地”。
我正在尝试这样做,因为在safari中,当您使用radius-border创建一个链接,并且您希望将鼠标悬停在该元素上时,它仍然表现为正方形。我不想使用图像映射。
我也不能重复使用相同的功能来检查圈内区域内不止一次盘旋(不要问我为什么,我试着理解但我不够聪明或能够理解),所以我的只有最后一个资源才是尝试根据序列触发事件。
aniCircle它是我想要嵌套动画序列的函数。这就是它的功能:
$("#cv").hover(
function(){
$("#sliders .circle").css("z-index","6");
aniCircle(1, $(this), "#slider1", {"opacity":"0"},{"opacity":"1"}, 0, speed2,
function(){$("#slider2").delay(speed2).animate({"opacity":"1"},speed2)}
);
},
function(){
$("#slider1").animate({"opacity":"0"},speed2)
$("#slider2").delay(speed2).animate({"opacity":"0"},speed2)
}
);
这里有网页 http://life-is-simple.co.uk/test5/index.html
记住在FF4上它可以正常工作,它在webkit浏览器上没有,我想用JS修复它。
感谢您的帮助
答案 0 :(得分:2)
我认为使用jquery .queue()
可以解决您的问题。
答案 1 :(得分:0)
jQuery animate() takes a "complete" callback。您可以将序列嵌套为:
$("#slider1").animate(
{"opacity":"0",
"speed": speed2,
"complete": second_animation
}
);
function second_animation() {
$("#slider2").animate()...
}
在slider1动画完成后,才会开始使用slider2动画。
答案 2 :(得分:0)
看起来你正在尝试这样的事情:
var outer = function(){
var test = function(){
alert('fired 1');
}()
var test2 = function(){
alert('fired 2');
}()
}
注意方法声明后的'()',使其立即触发。 这些将一个接一个地触发,但如果你将代码应用于将异步触发的代码,那么你将需要使用一个回调方法。
答案 3 :(得分:0)
默认情况下,JavaScript没有“功能序列”。 jQuery的animate()可以处理回调函数,因为它被编码为在动画完成时调用回调函数。
我认为你正在寻找类似的东西:
function setupThenCall(param1, param2, fn) {
// do some setup / processing
// call callback function after setup
fn();
}
如果您正在做一些更复杂的事情,例如多级回调,你可能想要使用jQuery的queue()。
答案 4 :(得分:0)
我很抱歉,但我将来必须重新提出这个问题,我注意到没有一个更简单的例子,没有时间专注于我的网站(我发现自己在整个星期都忙于各种项目,即使在正常工作时间之后),我也不想仅仅为了保持开放而不试图测试你建议的解决方案。
我为你在这个问题上花费的时间而感到遗憾。我会努力在将来更好地组织起来。非常感谢你的时间。
我试图关闭它,但我无法关闭它的恩惠:(