2011-08-28 111 views

回答

31

,我建议你不要使用jQueryUI的在所有的这一点 - 这是一个非常简单的动画,并且可以不加载UI很容易做到:

// DOM ready 
$(function(){ 
    // Self-executing recursive animation 
    (function pulse(){ 
     $('#my_div').delay(200).fadeOut('slow').delay(50).fadeIn('slow',pulse); 
    })(); 
}); 

工作演示http://jsfiddle.net/AlienWebguy/bSWMC/

正如你可以看到,它可以通过改变淡入淡出的速度和延迟的持续时间来轻松调整。

原来jQueryUI的pulsate()函数使用for环路times,所以你不能在不改变插件的逻辑使用这个插件实现你的结果:

$.effects.pulsate = function(o) { 
    return this.queue(function() { 
     var elem = $(this), 
      mode = $.effects.setMode(elem, o.options.mode || 'show'); 
      times = ((o.options.times || 5) * 2) - 1; 
      duration = o.duration ? o.duration/2 : $.fx.speeds._default/2, 
      isVisible = elem.is(':visible'), 
      animateTo = 0; 

     if (!isVisible) { 
      elem.css('opacity', 0).show(); 
      animateTo = 1; 
     } 

     if ((mode == 'hide' && isVisible) || (mode == 'show' && !isVisible)) { 
      times--; 
     } 

     for (var i = 0; i < times; i++) { 
      elem.animate({ opacity: animateTo }, duration, o.options.easing); 
      animateTo = (animateTo + 1) % 2; 
     } 

     elem.animate({ opacity: animateTo }, duration, o.options.easing, function() { 
      if (animateTo == 0) { 
       elem.hide(); 
      } 
      (o.callback && o.callback.apply(this, arguments)); 
     }); 

     elem 
      .queue('fx', function() { elem.dequeue(); }) 
      .dequeue(); 
    }); 
}; 
+0

您有什么建议? – Jordy

+1

查看更新代码 – AlienWebguy

+0

哇,谢谢。最后一个问题,如果我使用淡入,淡出示例,该元素会在几毫秒内消失,但淡入淡出元素下的所有元素都会上下移动。对不起,我的英语;-),所以有可能这个元素淡入淡出而不消失? – Jordy

-3

只是疯狂的猜测,但我会尝试0或-1。如果这没有帮助,您可以添加一个接近无限的值,可能是1000000或其他值。

10

jordy,你可以用里面的一个函数来完成上面的脉动。

//the function 
function pulsateforever(){ 
$("element").effect("pulsate", { times:1 }, pulsatetime,function(){ 
//repeat after pulsating 
pulsateforever(); 
}); 
} 
//call function when DOM is ready 
$(function(){ 
pulsateforever(); 
}); 

确保您更换元素与要跳动的元素,pulsatetime在你希望它跳动的速度。

+1

+1这绝对会工作,但正如我提到的这不应该使用JQueryUI--一个简单的'$('element')。fadeOut('slow')。delay(500).fadeIn('slow',recursion ..)'我认为是最优的。 – AlienWebguy

+0

好的,我该怎么办?不要使用用户界面脉冲,但淡入和退出?感谢帮助;-)! – Jordy

+0

查看我更新的帖子以获得解释 – AlienWebguy

1

看看这个新plugin

像魅力一样工作,脉动效果适用于所有浏览器。

2

基于关闭AlienWebguy的答案,但没有“隐藏”和“秀”荷兰国际集团的元素,而不仅仅是动画的不透明度:

(function pulse(){ 
      $("#elem").delay(200).animate({'opacity':1}).delay(500).animate({'opacity':0},pulse); 
     })(); 
+1

这是相当不错和简单,做这项工作 –