2010-06-19 59 views
1

我试图使用jQuery循环插件来循环使用不同的引号。我希望根据报价的长度显示不同时间的报价。为了达到这个目的,我得到内容管理系统输出秒类,比如dur13这样的类名需要13秒。jQuery循环插件为每个幻灯片使用不同的超时值

这是我的非工作的尝试:

$('.featureFade').cycle({cycleTimeout: 10, after: onCycleAfter}); 

function onCycleAfter() { 
    $('.featureFade').cycle('pause'); 
    var duration = $(this).attr('class').substring($(this).attr('class').indexOf('dur')+3) 
    setTimeout(oncycleEnd, duration * 1000); 
} 
function oncycleEnd() { 
    $('.featureFade').cycle('resume'); 
} 

这是可能的循环?如果不是有另一个插件可以工作?我不需要花哨的效果,淡入淡出就足够了。

非常感谢

回答

8

有一个timeoutFn option就可以使用,这样的:

$('.featureFade').cycle({ 
    timeoutFn: function(currElement, nextElement, opts, isForward) { 
    var duration = $(currElement).attr('class').substring($(currElement).attr('class').indexOf('dur')+3) 
    return duration * 1000; 
    } 
}); 

然而,而不是一类,你可以使用一个data attribute,是这样的:

<img data-duration="2000" src="..." /> 

那么你的代码有点简单:

$('.featureFade').cycle({ 
    timeoutFn: function(currElement, nextElement, opts, isForward) { 
    return parseInt($(currElement).attr('data-duration'), 10); 
    } 
}); 
+0

我喜欢数据属性的想法,更干净。 – Max 2010-06-19 10:22:42

+0

@Max - 尝试提醒号码,确保你的持续时间出现,就像你认为它是....例如,如果你有'class =“dur2 otherClass”'你会得到一个isNaN例外......这就是为什么我建议数据属性路由。 – 2010-06-19 10:23:10

+0

这工作完美,谢谢! – Max 2010-06-19 11:04:04