W metodzie opisanej poniżej Mijamy tablicę funkcji do naszego zwyczaj .toggleClick()
funkcji. I używamy atrybutu data-*
z HTML5
do przechowywania indeksu funkcji, która będzie wykonywana w następnej iteracji procesu obsługi zdarzenia kliknięcia. Ta wartość, przechowywana we właściwości data-index
, jest aktualizowana w każdej iteracji, dzięki czemu możemy śledzić indeks funkcji do wykonania w kolejnej iteracji.
Wszystkie te funkcje będą wykonywane jeden po drugim w każdej iteracji zdarzenia kliknięcia. Na przykład w pierwszej funkcji iteracji pod adresem index[0]
zostanie wykonana, w drugiej iteracji funkcja zapisana pod numerem index[1]
zostanie wykonana i tak dalej.
Możesz przekazać tylko 2 funkcje do tej tablicy w twoim przypadku. Ale ta metoda nie jest ograniczona tylko do 2 funkcji. Możesz przekazać 3, 4, 5 lub więcej funkcji w tej tablicy i będą one wykonywane bez wprowadzania zmian w kodzie.
Przykład w poniższym fragmencie zawiera cztery funkcje. Możesz przekazywać funkcje zgodnie z własnymi potrzebami.
$.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>
Jedno Zmieniłem to robiłem if (! Kliknięcia) ... To wtedy (na pierwszym alerty kliknij „nieparzystej”, do którego 1, pierwsze kliknięcie nie jest liczbą nieparzystą, działa to bardziej podobnie do toggle(), a instrukcja "if" jest używana jako pierwsze kliknięcie zamiast "else". –
To też dobrze ... możesz uporządkować swój kod jako lepiej pasuje do twoich potrzeb. :) cieszę się, że mogłem pomóc. – henser