⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jitk_jquery_ui_tabs.js

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JS
📖 第 1 页 / 共 2 页
字号:
                // for a disabled or loading tab!                if (($li.hasClass(o.selectedClass) && !o.unselect)                    || $li.hasClass(o.disabledClass)                     || $(this).hasClass(o.loadingClass)                    || $(self.element).triggerHandler('tabsselect', [self.ui(this, $show[0])], o.select) === false                    ) {                    this.blur();                    return false;                }                self.options.selected = self.$tabs.index(this);                // if tab may be closed                if (o.unselect) {                    if ($li.hasClass(o.selectedClass)) {                        self.options.selected = null;                        $li.removeClass(o.selectedClass);                        self.$panels.stop();                        hideTab(this, $hide);                        this.blur();                        return false;                    } else if (!$hide.length) {                        self.$panels.stop();                        var a = this;                        self.load(self.$tabs.index(this), function() {                            $li.addClass(o.selectedClass).addClass(o.unselectClass);                            showTab(a, $show);                        });                        this.blur();                        return false;                    }                }                if (o.cookie)                    $.cookie('ui-tabs' + $.data(self.element), self.options.selected, o.cookie);                // stop possibly running animations                self.$panels.stop();                // show new tab                if ($show.length) {                    // prevent scrollbar scrolling to 0 and than back in IE7, happens only if bookmarking/history is enabled                    /*if ($.browser.msie && o.bookmarkable) {                        var showId = this.hash.replace('#', '');                        $show.attr('id', '');                        setTimeout(function() {                            $show.attr('id', showId); // restore id                        }, 0);                    }*/                    var a = this;                    self.load(self.$tabs.index(this), $hide.length ?                         function() {                            switchTab(a, $li, $hide, $show);                        } :                        function() {                            $li.addClass(o.selectedClass);                            showTab(a, $show);                        }                    );                    // Set scrollbar to saved position - need to use timeout with 0 to prevent browser scroll to target of hash                    /*var scrollX = window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || document.body.scrollLeft || 0;                    var scrollY = window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop || 0;                    setTimeout(function() {                        scrollTo(scrollX, scrollY);                    }, 0);*/                } else                    throw 'jQuery UI Tabs: Mismatching fragment identifier.';                // Prevent IE from keeping other link focussed when using the back button                // and remove dotted border from clicked link. This is controlled in modern                // browsers via CSS, also blur removes focus from address bar in Firefox                // which can become a usability and annoying problem with tabsRotate.                if ($.browser.msie)                    this.blur();                //return o.bookmarkable && !!trueClick; // convert trueClick == undefined to Boolean required in IE                return false;            });            // disable click if event is configured to something else            if (!(/^click/).test(o.event))                this.$tabs.bind('click.tabs', function() { return false; });        },        add: function(url, label, index) {            if (index == undefined)                 index = this.$tabs.length; // append by default            var o = this.options;            var $li = $(o.tabTemplate.replace(/#\{href\}/, url).replace(/#\{label\}/, label));            $li.data('destroy.tabs', true);            var id = url.indexOf('#') == 0 ? url.replace('#', '') : this.tabId( $('a:first-child', $li)[0] );            // try to find an existing element before creating a new one            var $panel = $('#' + id);            if (!$panel.length) {                $panel = $(o.panelTemplate).attr('id', id)                    .addClass(o.panelClass).addClass(o.hideClass);                $panel.data('destroy.tabs', true);            }            if (index >= this.$lis.length) {                $li.appendTo(this.element);                $panel.appendTo(this.element.parentNode);            } else {                $li.insertBefore(this.$lis[index]);                $panel.insertBefore(this.$panels[index]);            }                        o.disabled = $.map(o.disabled,                function(n, i) { return n >= index ? ++n : n });                            this.tabify();            if (this.$tabs.length == 1) {                 $li.addClass(o.selectedClass);                 $panel.removeClass(o.hideClass);                 var href = $.data(this.$tabs[0], 'load.tabs');                 if (href)                     this.load(index, href);            }            // callback            $(this.element).triggerHandler('tabsadd',                [this.ui(this.$tabs[index], this.$panels[index])], o.add            );        },        remove: function(index) {            var o = this.options, $li = this.$lis.eq(index).remove(),                $panel = this.$panels.eq(index).remove();            // If selected tab was removed focus tab to the right or            // in case the last tab was removed the tab to the left.            if ($li.hasClass(o.selectedClass) && this.$tabs.length > 1)                this.select(index + (index + 1 < this.$tabs.length ? 1 : -1));            o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }),                function(n, i) { return n >= index ? --n : n });            this.tabify();            // callback            $(this.element).triggerHandler('tabsremove',                [this.ui($li.find('a')[0], $panel[0])], o.remove            );        },        enable: function(index) {            var o = this.options;            if ($.inArray(index, o.disabled) == -1)                return;                            var $li = this.$lis.eq(index).removeClass(o.disabledClass);            if ($.browser.safari) { // fix disappearing tab (that used opacity indicating disabling) after enabling in Safari 2...                $li.css('display', 'inline-block');                setTimeout(function() {                    $li.css('display', 'block');                }, 0);            }            o.disabled = $.grep(o.disabled, function(n, i) { return n != index; });            // callback            $(this.element).triggerHandler('tabsenable',                [this.ui(this.$tabs[index], this.$panels[index])], o.enable            );        },        disable: function(index) {            var self = this, o = this.options;            if (index != o.selected) { // cannot disable already selected tab                this.$lis.eq(index).addClass(o.disabledClass);                o.disabled.push(index);                o.disabled.sort();                // callback                $(this.element).triggerHandler('tabsdisable',                    [this.ui(this.$tabs[index], this.$panels[index])], o.disable                );            }        },        select: function(index) {            if (typeof index == 'string')                index = this.$tabs.index( this.$tabs.filter('[href$=' + index + ']')[0] );            this.$tabs.eq(index).trigger(this.options.event);        },        load: function(index, callback) { // callback is for internal usage only                        var self = this, o = this.options, $a = this.$tabs.eq(index), a = $a[0],                    bypassCache = callback == undefined || callback === false, url = $a.data('load.tabs');            callback = callback || function() {};                        // no remote or from cache - just finish with callback            if (!url || ($.data(a, 'cache.tabs') && !bypassCache)) {                callback();                return;            }            // load remote from here on            if (o.spinner) {                var $span = $('span', a);                $span.data('label.tabs', $span.html()).html('<em>' + o.spinner + '</em>');            }            var finish = function() {                self.$tabs.filter('.' + o.loadingClass).each(function() {                    $(this).removeClass(o.loadingClass);                    if (o.spinner) {                        var $span = $('span', this);                        $span.html($span.data('label.tabs')).removeData('label.tabs');                    }                });                self.xhr = null;            };            var ajaxOptions = $.extend({}, o.ajaxOptions, {                url: url,                success: function(r, s) {                    $(a.hash).html(r);                    finish();                                        // This callback is required because the switch has to take                    // place after loading has completed.                    callback();                    if (o.cache)                        $.data(a, 'cache.tabs', true); // if loaded once do not load them again                    // callback                    $(self.element).triggerHandler('tabsload',                        [self.ui(self.$tabs[index], self.$panels[index])], o.load                    );                    o.ajaxOptions.success && o.ajaxOptions.success(r, s);                }            });            if (this.xhr) {                // terminate pending requests from other tabs and restore tab label                this.xhr.abort();                finish();            }            $a.addClass(o.loadingClass);            setTimeout(function() { // timeout is again required in IE, "wait" for id being restored                self.xhr = $.ajax(ajaxOptions);            }, 0);        },        url: function(index, url) {            this.$tabs.eq(index).removeData('cache.tabs').data('load.tabs', url);        },        destroy: function() {            var o = this.options;            $(this.element).unbind('.tabs')                .removeClass(o.navClass).removeData('tabs');            this.$tabs.each(function() {                var href = $.data(this, 'href.tabs');                if (href)                    this.href = href;                var $this = $(this).unbind('.tabs');                $.each(['href', 'load', 'cache'], function(i, prefix) {                      $this.removeData(prefix + '.tabs');                });            });            this.$lis.add(this.$panels).each(function() {                if ($.data(this, 'destroy.tabs'))                    $(this).remove();                else                    $(this).removeClass([o.selectedClass, o.unselectClass,                        o.disabledClass, o.panelClass, o.hideClass].join(' '));            });        }    });})(jQuery);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -