0

我正在开发一个 jQuery 插件来创建模态窗口,所以,现在,我想在隐藏元素后恢复元素的原始状态。

有人可以帮助我吗?

谢谢!

- - 更新 - -

对不起,

我想在显示时将元素html存储在某个地方,然后在隐藏时将存储的数据放回去。

这是我的插件:

(function ($) { // v2ui_modal
    var methods = {
        show: function (options) {
            var _this = this;

            var defaults = {
                showOverlay: true,
                persistentContent: true
            };

            var options = $.extend(defaults, options);

            if (!_this.attr('id')) {
                _this.attr('id', 'v2ui-id_' + Math.random().toString().replace('.', ''));
            }

            if (options.showOverlay) {
                $('<div />', { // overlay
                    id: 'v2-ui-plugin-modal-overlay-' + this.attr('id'),
                    css: {
                        zIndex: ($.topZIndex() + 1),
                        display: 'none',
                        position: 'fixed',
                        width: '100%',
                        height: '100%',
                        top: 0,
                        left: 0
                    }
                }).addClass('v2-ui').addClass('plugin').addClass('overlay').appendTo('body');
            };

            _this.css({
                zIndex: ($.topZIndex() + 2),
                position: 'fixed'
            });

            _this.center();

            $('#v2-ui-plugin-modal-overlay-' + _this.attr('id')).fadeIn(function () {
                _this.fadeIn();
            });
        },

        hide: function () {
            var _this = this;

            _this.fadeOut();

            $('#v2-ui-plugin-modal-overlay-' + _this.attr('id')).fadeOut(function () {
                $('#v2-ui-plugin-modal-overlay-' + _this.attr('id')).remove();
                if ((_this.attr('id')).substr(0, 8) == 'v2ui-id_') {
                    _this.removeAttr('id');
                };
            });
        }
    };

    jQuery.fn.v2ui_modal = function (methodOrOptions) {
        if (methods[methodOrOptions]) {
            methods[methodOrOptions].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
            methods.show.apply(this, arguments);
        };
    };
})(jQuery);
4

1 回答 1

1

你可以看看jQuery.detach

.detach() 方法与 .remove() 方法相同,不同之处在于 .detach() 保留与已删除元素关联的所有 jQuery 数据。当移除的元素稍后要重新插入到 DOM 中时,此方法很有用。

但是我很难完全理解您的问题,所以如果我的回答不符合您的问题,我深表歉意。

于 2012-08-17T08:48:34.427 回答