UNPKG

zui

Version:

一个基于 Bootstrap 深度定制开源前端实践方案,帮助你快速构建现代跨屏应用。

115 lines (98 loc) 3.54 kB
/* ======================================================================== * ZUI: jquery.extensions.js * http://zui.sexy * ======================================================================== * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT * ======================================================================== */ (function($, window, undefined) { 'use strict'; /* Check jquery */ if(typeof($) === 'undefined') throw new Error('ZUI requires jQuery'); // ZUI shared object if(!$.zui) $.zui = function(obj) { if($.isPlainObject(obj)) { $.extend($.zui, obj); } }; var MOUSE_BUTTON_CODES = { all: -1, left: 0, middle: 1, right: 2 }; var lastUuidAmend = 0; $.zui({ uuid: function(asNumber) { var uuidNumber = (new Date()).getTime() * 1000 + (lastUuidAmend++) % 1000; return asNumber ? uuidNumber : uuidNumber.toString(36); }, callEvent: function(func, event, proxy) { if($.isFunction(func)) { if(proxy !== undefined) { func = $.proxy(func, proxy); } var result = func(event); if(event) event.result = result; return !(result !== undefined && (!result)); } return 1; }, clientLang: function() { var lang; var config = window.config; if(typeof(config) != 'undefined' && config.clientLang) { lang = config.clientLang; } if(!lang) { var hl = $('html').attr('lang'); lang = hl ? hl : (navigator.userLanguage || navigator.userLanguage || 'zh_cn'); } return lang.replace('-', '_').toLowerCase(); }, strCode: function(str) { var code = 0; if(str && str.length) { for(var i = 0; i < str.length; ++i) { code += i * str.charCodeAt(i); } } return code; }, getMouseButtonCode: function(mouseButton) { if(typeof mouseButton !== 'number') { mouseButton = MOUSE_BUTTON_CODES[mouseButton]; } if(mouseButton === undefined || mouseButton === null) mouseButton = -1; return mouseButton; } }); $.fn.callEvent = function(name, event, model) { var $this = $(this); var dotIndex = name.indexOf('.zui.'); var shortName = dotIndex < 0 ? name : name.substring(0, dotIndex); var e = $.Event(shortName, event); if((model === undefined) && dotIndex > 0) { model = $this.data(name.substring(dotIndex + 1)); } if(model && model.options) { var func = model.options[shortName]; if($.isFunction(func)) { e.result = $.zui.callEvent(func, e, model); } } $this.trigger(e); return e; }; $.fn.callComEvent = function(component, eventName, params) { if (params !== undefined && !$.isArray(params)) { params = [params]; } var $this = this; var result = $this.triggerHandler(eventName, params); var eventCallback = component.options[eventName]; if (eventCallback) { result = eventCallback.apply(component, params); } return result; }; }(jQuery, window, undefined));