123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- /*!
- * B-JUI v1.2 (http://b-jui.com)
- * Git@OSC (http://git.oschina.net/xknaan/B-JUI)
- * Copyright 2014 K'naan (xknaan@163.com).
- * Licensed under Apache (http://www.apache.org/licenses/LICENSE-2.0)
- */
- /* ========================================================================
- * B-JUI: bjui-ajaxtab.js v1.2
- * @author K'naan (xknaan@163.com)
- * http://git.oschina.net/xknaan/B-JUI/blob/master/BJUI/js/bjui-ajaxtab.js
- * ========================================================================
- * Copyright 2014 K'naan.
- * Licensed under Apache (http://www.apache.org/licenses/LICENSE-2.0)
- * ======================================================================== */
- +function ($) {
- 'use strict';
-
- // AJAXTAB CLASS DEFINITION
- // ======================
-
- var Ajaxtab = function(element, options) {
- this.$element = $(element)
- this.options = options
- }
-
- Ajaxtab.DEFAULTS = {
- url : undefined,
- target : undefined,
- reload : false
- }
-
- Ajaxtab.prototype.init = function() {
- var options = this.options
-
- if (!(options.url)) {
- BJUI.debug('Ajaxtab Plugin: Error trying to open a tab, url is undefined!')
- return
- } else {
- options.url = decodeURI(options.url).replacePlh(this.$element.closest('.unitBox'))
-
- if (!options.url.isFinishedTm()) {
- this.$element.alertmsg('error', (options.warn || FRAG.alertPlhMsg.replace('#plhmsg#', BJUI.regional.plhmsg)))
- BJUI.debug('Ajaxtab Plugin: The new ajaxtab\'s url is incorrect, url: '+ options.url)
- return
- }
-
- options.url = encodeURI(options.url)
- }
- if (!options.target) {
- BJUI.debug('Ajaxtab Plugin: Attribute \'target\' is not defined!')
- return
- }
- if (options.reload) {
- this.load()
- } else {
- var reload = this.$element.data('bjui.ajaxtab.reload')
-
- if (!reload) this.load()
- else this.$element.tab('show')
- }
- }
-
- Ajaxtab.prototype.load = function() {
- var $element = this.$element
- var options = this.options
-
- $(options.target).ajaxUrl({
- url : options.url,
- data : {},
- callback : function() {
- $element.data('bjui.ajaxtab.reload', true).tab('show')
- }
- })
- }
-
- // AJAXTAB PLUGIN DEFINITION
- // =======================
-
- function Plugin(option) {
- var args = arguments
- var property = option
-
- return this.each(function () {
- var $this = $(this)
- var options = $.extend({}, Ajaxtab.DEFAULTS, $this.data(), typeof option == 'object' && option)
- var data = $this.data('bjui.ajaxtab')
-
- if (!data) $this.data('bjui.ajaxtab', (data = new Ajaxtab(this, options)))
- if (typeof property == 'string' && $.isFunction(data[property])) {
- [].shift.apply(args)
- if (!args) data[property]()
- else data[property].apply(data, args)
- } else {
- data.init()
- }
- })
- }
- var old = $.fn.ajaxtab
- $.fn.ajaxtab = Plugin
- $.fn.ajaxtab.Constructor = Ajaxtab
-
- // AJAXTAB NO CONFLICT
- // =================
-
- $.fn.ajaxtab.noConflict = function () {
- $.fn.ajaxtab = old
- return this
- }
-
- // AJAXTAB DATA-API
- // ==============
- $(document).on('click.bjui.ajaxtab.data-api', '[data-toggle="ajaxtab"]', function(e) {
- var $this = $(this)
- var options = $this.data()
-
- if (!options.url) options.url = $this.attr('href')
- Plugin.call($this, options)
-
- e.preventDefault()
- })
-
- }(jQuery);
|