在计时器内执行onload $(function(){},并将参数传递给它

时间:2013-03-14 16:08:39

标签: javascript jquery parameters timer

我在jquery中有一个onload函数,如:

$(function () {
    $('.over').hover(function () {

            //FIRST PARAMETER RIGT, LEFT, TOP, BOTTOM
        if ($(this).attr('data-direction') == 'right') {
            $(this).addClass('flipping-right');
        }   
        else if ($(this).attr('data-direction') == 'left') {
            $(this).addClass('flipping-left');
        }
        else if ($(this).attr('data-direction') == 'top') {
            $(this).addClass('flipping-top');
        }
                 //ETC.

    //SECOND gal1,gal2,gal3,gal4
    if ($(this).attr('gal') == 'gal1'){    
        img = $(this).find('img');
        setTimeout(function() {
           img.attr('src', arrFirstYellowCard[i]);
           i++;
           if(i > arrFirstYellowCard.length-1)
              i=0;
       }, 100);
    }

    else   if ($(this).attr('gal') == 'gal2'){    
        img = $(this).find('img');
        setTimeout(function() {
           img.attr('src', arrSecondPurpleCard[j]);
           j++;
           if(j > arrSecondPurpleCard.length-1)
              j=0;
       }, 100);
    }  

我希望函数每秒执行一次该函数,但是数组中的参数如

var array_param = ["right,gal1","top,gal3","bottom,gal4","left,gal2","right,gal5"];

允许的组合

我想要一个计时器,所以每秒都会调用每个参数

var timer = $.timer($('.over').hover(array_param( 0 ) ), 1000);
timer.play();

但我不知道如何实现这个函数,以及如何将参数添加到onload中分配的函数中:

$(function () { $('.over').hover(function () {...

Please take a look at my jsfiddle

1 个答案:

答案 0 :(得分:1)

你无法再次触发准备。您可以创建一个命名函数并将其称为一堆。

$(function () {
    index = 0;
    window.setInterval(function () {
        if (index > array_param.length) index = 0;
        myFunction(array_param[index++]);
    }, 1000); // call myFunction every second
});

myFunction = function (image) {
    $('.over').hover(function () {
        // rest of your code goes here
        ...
};