2012-02-02 2 views
1

J'ai du mal à trouver ce problème lorsque j'ai un bouton qui fait un clic de masse sur les autres boutons d'une page. Bien que le problème est que je ne veux pas activer tous les boutons tout à la fois et fondamentalement les temporiser jusqu'à ce que les autres boutons finissent leurs actions. Comment puis-je obtenir le code ci-dessus pour cliquer sur 3 boutons à la fois avant de passer aux autres boutons.?Comment obtenir un bouton pour cliquer sur d'autres boutons

Répondre

1

Vous pouvez utiliser les délais d'attente récursives comme ceci:

(désolé, je l'ai oublié était trois boutons à la fois);

Page.MassCheckStats = function(button){ 
    var button = typeof button == 'undefined'?$('[data-field="button_update_stats"]')[0] : button; 
    for(var i = 0; i < 3; i++){ 
     $(button).click(); 
     if($(button).next().length == 0) return; 
     button = $(button).next(); 
    } 
    setTimeout(function(){    
     Page.MassCheckStats($(button)); 
    }, 1000); 
} 

où 1000 = 1000 = 1 seconde miliseconds

et voici le violon pour lui: http://jsfiddle.net/andrepadez/cR4tP/2/

la ligne sapins dans la fonction est un opérateur Trenary. cela signifie que si vous ne passez aucun paramètre appelant la fonction (la première fois qu'il est appelé), typeof button == 'undefined', il attribuera à var button le premier élément sélectionné par le sélecteur jQuery - $('[data-field="button_update_stats"]')[0]. Quand je l'appelle de nouveau à partir des délais d'attente, je passe le courant $(button).next() donc il assumera ce qui a été passé dans le paramètre.

+0

Hmm J'ai cliqué sur le clic tout et rien ne s'est passé. – Novazero

+0

wait nm ça marche maintenant. On dirait que c'est exactement ce que je voulais: D merci pour votre effort en m'enseignant cela. – Novazero

+0

si vous avez des questions sur le code, n'hésitez pas à demander –

2

au lieu de se soucier des boutons que vous devez simplement appeler les fonctions assignées à chacun des boutons cliquez sur les événements

ou si c'est le cas d'un certain bouton besoin de faire ce que les trois autres boutons font d'abord, sa fonction devrait contenir ces 3 fonctions

+1

c'est vrai, mais il y a beaucoup de situations ces fonctions sont des fonctions anonymes, et vous devez vraiment déclencher l'événement ... –

+0

Ouais, c'est pourquoi la réponse de tam ne m'a pas aidé dans ma situation depuis mes fonctions sont anonymes. – Novazero

1

Cela semble incroyablement hacky, mais peut-être que vous pourriez joindre encore un autre gestionnaire de clic.

$(document).ready(function(){ 
    $buttons = $('[data-field="button_update_stats"]'); 

    // attach your original events here 

    for(var i = 0; i < $buttons.length-1; i++) { 
     $button = $($buttons.get(i)); 
     $button.click(function(){$($buttons.get(i+1)).click();}); 
    } 
} 


// to start the chain 
$($('[data-field="button_update_stats"]').get(0).click(); 

Ce code est complètement ad hoc et n'a pas été testé

Questions connexes