Эквивалент устаревшего события jQuery Toggle

Функция jQuery Toggle Event была удалена как часть версии 1.9.

Я использовал эту функцию следующим образом:

$('#example').toggle(function() { do stuff }, function() { do stuff }); 

Каким будет лучший способ воспроизвести эту функциональность, теперь Toggle Event ушел?

Загрузите MIGRATE и посмотрите код там

См. Мой пост о том же

Где fn.toggle (обработчик (eventObject), обработчик (eventObject) …) ушел?

Я предположил, что они переименовали его в fn.toggler, а не удалили

Вот код – это автономный плагин jQuery и может использоваться как есть.

 jQuery.fn.toggle = function( fn, fn2 ) { // Don't mess with animation or css toggles if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) { return oldToggle.apply( this, arguments ); } // migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated"); // Save reference to arguments for access in closure var args = arguments, guid = fn.guid || jQuery.guid++, i = 0, toggler = function( event ) { // Figure out which function to execute var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); // Make sure that clicks stop event.preventDefault(); // and execute the function return args[ lastToggle ].apply( this, arguments ) || false; }; // link all the functions, so any of them can unbind this click handler toggler.guid = guid; while ( i < args.length ) { args[ i++ ].guid = guid; } return this.click( toggler ); }; 

Более короткая, не проверенная версия:

 (function( $ ){ $.fn.toggler = function( fn, fn2 ) { var args = arguments,guid = fn.guid || $.guid++,i=0, toggler = function( event ) { var lastToggle = ( $._data( this, "lastToggle" + fn.guid ) || 0 ) % i; $._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); event.preventDefault(); return args[ lastToggle ].apply( this, arguments ) || false; }; toggler.guid = guid; while ( i < args.length ) { args[ i++ ].guid = guid; } return this.click( toggler ); }; })( jQuery ); 

Это также хорошо работает.

 $.fn.toggleClick = function(){ var functions = arguments ; return this.click(function(){ var iteration = $(this).data('iteration') || 0; functions[iteration].apply(this, arguments); iteration = (iteration + 1) % functions.length ; $(this).data('iteration', iteration); }); }; 
Давайте будем гением компьютера.