如何创建一系列函数?

时间:2011-03-27 13:42:09

标签: jquery function sequence

我试着做

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修复它。

感谢您的帮助

5 个答案:

答案 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)

我很抱歉,但我将来必须重新提出这个问题,我注意到没有一个更简单的例子,没有时间专注于我的网站(我发现自己在整个星期都忙于各种项目,即使在正常工作时间之后),我也不想仅仅为了保持开放而不试图测试你建议的解决方案。

我为你在这个问题上花费的时间而感到遗憾。我会努力在将来更好地组织起来。非常感谢你的时间。

我试图关闭它,但我无法关闭它的恩惠:(