2015-06-19 67 views
3

我有下面的代碼,我通過IMG元素循環,要隨機應用效果基本show()和了slideDown()對他們的jQuery效果:JQuery的 - 隨機撥打效果基本show和了slideDown連鎖

$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 
}); 

我可以」將函數放置在數組中,因爲它們作爲元素對象方法存在。我也嘗試過擴展元素對象來添加我的屬性,但它並沒有很好地工作,也沒有做一些其他方法。

那麼,關於如何我可以依次執行兩個不同的回調或隨機執行任何想法?

+0

您可能需要使用迭代器在'$。每()'和'有條件效果基本show()'或「'了slideDown( )'。 – area28

回答

7

您可以使用數組語法來引用屬性。所以["slideUp"]()會打電話給.slideUp()

您也可以通過將內部較大的表達擴展這個:

[ Math.random() > 0.5 ? "slideUp" : "slideDown" ]() 
+0

我得到'未捕獲的SyntaxError:意外的令牌['。 – showdev

+0

@showdev我的錯誤。我意外地用'。['開始了這個表達。它不應該有'.' – Stryner

+3

嘿,這真是太棒了! [這裏的例子](http://jsfiddle.net/ydv4wam5/)。 – showdev

相關問題