Nel metodo indicato di seguito Stiamo passando una serie di funzioni per la nostra funzione personalizzata .toggleClick()
. E stiamo usando l'attributo data-*
di HTML5
per memorizzare l'indice della funzione che verrà eseguita nella successiva iterazione del processo di gestione degli eventi dei clic. Questo valore, memorizzato nella proprietà data-index
, viene aggiornato in ogni iterazione in modo da poter tracciare l'indice della funzione da eseguire nella successiva iterazione.
Tutte queste funzioni verranno eseguite una alla volta in ogni iterazione dell'evento click. Ad esempio nella prima funzione di iterazione a index[0]
verrà eseguita, nella seconda funzione di iterazione memorizzata in index[1]
verrà eseguita e così via.
Nel caso si possono passare solo 2 funzioni a questo array. Ma questo metodo non è limitato a sole 2 funzioni. È possibile passare 3, 4, 5 o più funzioni in questo array e verranno eseguite senza apportare modifiche al codice.
L'esempio nel frammento seguente sta gestendo quattro funzioni. È possibile passare le funzioni in base alle proprie esigenze.
$.fn.toggleClick = function(funcArray) {
return this.click(function() {
var elem = $(this);
var index = elem.data('index') || 0;
funcArray[index]();
elem.data('index', (index + 1) % funcArray.length);
});
};
$('.btn').toggleClick([
function() {
alert('From Function 1');
}, function() {
alert('From Function 2');
}, function() {
alert('From Function 3');
}, function() {
alert('From Function 4');
}
]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button type="button" class="btn">Click Me</button>
<button type="button" class="btn">Click Me</button>
fonte
2016-09-08 14:54:09
Una cosa che ho cambiato è che ho fatto if (! Click) ... Questo poi (al primo click avvisi 'numero dispari', a cui 1, il primo click è un numero dispari non pari, funziona più simile a toggle() così come l'istruzione 'if' è usata come primo clic anziché 'else'. –
che va bene anche ... puoi organizzare il tuo codice come si adatta meglio alle tue esigenze :) Sono felice di poterti aiutare. – henser