2011-03-27 94 views
2

我试图做如何创建一系列功能?

myfun(params, 
    function(){ 
     //something happen 
    } 
); 

,但它是不工作的,我绝对不知道为什么,我要疯了。 几个星期后,我仍然对一个问题感到头痛,而且我需要真正的帮助,因为我不擅长Jquery语法。

我想要实现的是: 启动一个函数,检查您是否在圆形区域内悬停,如果您确实触发了一系列函数(在这种情况下显示一系列动画) 。我不能“一个接一个”。

我想要做到这一点,因为在safari中,当你制作一个带半径边框的链接,并且你想要悬停在该元素上时,它仍然表现为一个正方形。我不想使用图像映射。

以及我不能重复使用相同的函数来检查在一个圆区域内悬停多次(不要问我为什么,我试图理解,但我不够聪明或不够能够理解),所以我唯一的最后一个资源是尝试基于序列触发事件。

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

它的JavaScript语法。JavaScript是一种语言,jQuery是图书馆。 – 2011-03-27 14:18:45

+0

肯定的,但需要在特定的写入的jQuery因为这个原因,我写了语法,如果你告诉我你不能使用这种类型的短语,我会修改我的内容 – Littlemad 2011-03-27 14:30:00

+0

没有比Javascript更多的功能,这就是为什么它被称为Javascript语法,用于jQuery的语法不是唯一的到jQuery。 – 2011-03-28 00:05:04

回答

0

对不起,但我必须在以后重新提出这个问题,我注意到没有一个更直接的例子,没有时间献给我的网站(我发现自己在整个一周的时间里忙于各种项目甚至在正常工作时间之后),我不想保留我的问题,只是为了保持开放而不尝试和测试您的解决方案。

我很抱歉我让你花费在这个问题上的时间。我会尽力在将来组织得更好。非常感谢您的宝贵时间。

我试图关闭它,但赏金的淡然,我不能关闭它:(

+0

这是一个糟糕的形式。问题:人们试图帮助你,也许部分是因为赏金,当然你不应该关闭它,你应该鼓励进一步的答案,并奖励你最喜欢的奖励,或者让系统分配1/2你的赏金会自动转到最高票数的答案 – 2011-04-18 08:42:52

+0

我同意,我不喜欢选择这个解决方案,我个人不关心这些问题,我以后可以随时恢复。我不 必须遵循并测试每个人的建议。我如何联系管理员并向他寻求帮助?我不介意把自己的观点重新提交给人们,或者投票答复他们的答案,或者至少保持开放更长的时间,我真的因为工作而下雪了,但我不喜欢投票而不确定答案是否正确的一个(我不想为一个问题创建一个错误的内容先例) – Littlemad 2011-04-19 15:49:47

+0

在这种情况下,只要离开它,让系统奖励更高的赞扬的答案。 – 2011-04-20 02:59:11

0

jQuery的animate() takes a "complete" callback。您可以嵌套序列,如:

$("#slider1").animate(
    {"opacity":"0", 
    "speed": speed2, 
    "complete": second_animation 
    } 
); 

function second_animation() { 
$("#slider2").animate()... 
} 

slider2动画将不会开始,直到slider1动画完成。

+0

我的功能aniCircle不是一个动画,它包含各种检查后的动画和回调(我猜)它不工作。请看看该功能的代码 – Littlemad 2011-03-28 15:03:01

0

它看起来像你想是这样的:

var outer = function(){ 
var test = function(){ 
    alert('fired 1'); 
}() 
var test2 = function(){ 
    alert('fired 2'); 
}() 
} 

的通知“()”后的方法声明,这使得它立即开火。 这些会依次触发,但如果您将代码应用于将异步触发的代码,则需要使用回调方法。

0

默认情况下,JavaScript没有“函数序列”。 jQuery的animate()可以处理回调函数,因为它被编码为在动画完成时调用回调函数。

我认为你正在寻找的东西,如:

function setupThenCall(param1, param2, fn) { 
    // do some setup/processing 

    // call callback function after setup 
    fn(); 
} 

如果你正在做的事情比较复杂,例如多个级别的回调,你可能想要使用jQuery的queue()

2

我想用jquery .queue()可以解决你的问题。

+0

我会倾向于同意 - http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me可能对更多文档有用... – gnarf 2011-04-17 09:13:46