2010-09-07 15 views

risposta

14

è possibile creare e cancellare un secondo timer 2, in questo modo:

$("a.menu-arrow").hover(function() { 
    $.data(this, "timer", setTimeout($.proxy(function() { 
    $(this).click(); 
    }, this), 2000)); 
}, function() { 
    clearTimeout($.data(this, "timer")); 
}); 

You can give it a try here. Utilizzando $.data() stiamo memorizzando un timeout per elemento per evitare problemi e cancellare il timer corretto. Il resto è solo l'impostazione di un timer di 2 secondi quando si entra nell'elemento e lo si cancella quando si esce. Quindi se rimani per 2000ms, spara un .click(), se lo lasci smette di azzerare il timer.

+0

Uomo sei un genuis, grazie ancora – Nasir

+0

Soluzione molto elegante! – jwueller

+0

hi nick, '$ (this) .click();' come viene attivato virtualmente && come chiama il corrispondente gestore di eventi senza passare una funzione di gestore di eventi come parametro a '.click()'? non possiamo farlo usando '.trigger()' ?? –

0

Dovresti essere in grado di attivare il gestore di clic dopo due secondi. Suggerisco il seguente codice:

$(function() { 
    var timeout; 

    $('a.menu-arrow').hover(function() { 
     var self = this; 
     timeout = setTimeout(function() { 
      $(self).click(); 
      timeout = null; 
     }); 
    }, function() { 
     if (timeout) { 
      clearTimeout(timeout); 
     } 
    }); 
}); 
Problemi correlati