2015-11-13 21:33:53 +08:00
|
|
|
/*!
|
|
|
|
* 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()
|
|
|
|
})
|
|
|
|
|
2015-10-23 23:19:11 +08:00
|
|
|
}(jQuery);
|