我有以下代码,我循环通过img元素,并希望随机应用slideUp()和slideDown()jquery效果:
$c.each(function(){
$(this).find('img:gt(0)').hide();
setInterval(function () {
$(this).find(':first-child')
.[sometimes slideUp(), sometimes slideDown()] // <<<
.next('img')
.fadeIn()
.end()
.appendTo(this)
}.bind(this), 3000 + Math.random()*4000); // 4 seconds
});
Run Code Online (Sandbox Code Playgroud)
我不能将函数放在数组中,因为它们作为元素对象方法存在.我也尝试扩展元素对象来添加我的属性,但它也没有很好用,也没有其他一些方法.
那么,关于如何依次或随机执行两个不同的回调的任何想法?
您可以使用数组语法引用属性.所以["slideUp"]()会打电话.slideUp().
您还可以通过在内部放置一个更大的表达式来扩展它:
[ Math.random() > 0.5 ? "slideUp" : "slideDown" ]()
Run Code Online (Sandbox Code Playgroud)