| 2750 | } |
| 2751 | |
| 2752 | function run(next) { |
| 2753 | var elem = $(this); |
| 2754 | |
| 2755 | function cleanup() { |
| 2756 | elem.removeData(dataSpaceAnimated); |
| 2757 | |
| 2758 | $.effects.cleanUp(elem); |
| 2759 | |
| 2760 | if (args.mode === "hide") { |
| 2761 | elem.hide(); |
| 2762 | } |
| 2763 | |
| 2764 | done(); |
| 2765 | } |
| 2766 | |
| 2767 | function done() { |
| 2768 | if ($.isFunction(complete)) { |
| 2769 | complete.call(elem[0]); |
| 2770 | } |
| 2771 | |
| 2772 | if ($.isFunction(next)) { |
| 2773 | next(); |
| 2774 | } |
| 2775 | } |
| 2776 | |
| 2777 | // Override mode option on a per element basis, |
| 2778 | // as toggle can be either show or hide depending on element state |
| 2779 | args.mode = modes.shift(); |
| 2780 | |
| 2781 | if ($.uiBackCompat !== false && !defaultMode) { |
| 2782 | if (elem.is(":hidden") ? mode === "hide" : mode === "show") { |
| 2783 | // Call the core method to track "olddisplay" properly |
| 2784 | elem[mode](); |
| 2785 | done(); |
| 2786 | } else { |
| 2787 | effectMethod.call(elem[0], args, done); |
| 2788 | } |
| 2789 | } else { |
| 2790 | if (args.mode === "none") { |
| 2791 | // Call the core method to track "olddisplay" properly |
| 2792 | elem[mode](); |
| 2793 | done(); |
| 2794 | } else { |
| 2795 | effectMethod.call(elem[0], args, cleanup); |
| 2796 | } |
| 2797 | } |
| 2798 | } |
| 2799 | |
| 2800 | // Run prefilter on all elements first to ensure that |
| 2801 | // any showing or hiding happens before placeholder creation, |