栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

Javascript代码实现仿实例化类

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Javascript代码实现仿实例化类

Javascript能做的事情越发的多了起来,随之而来的问题即是Js代码量的增加,面对代码的加多,我选择了仿面向对像类实例化里的构造函数自动启动的方式,把所有的js代码,以注册的形式,类化了起来。

代码


 
HHJsLib.register({
  init: function() {
    this.bindPreviewBtn();
    this.bindUploadEleImageBtn();
    this.bindUploadEleAudioBtn('a.audio-upload-btn');
    this.bindUploadEleVideoBtn('a.video-upload-btn');
    this.bindDownloadEleAudioBtn();
    this.bindNewConBtn();
    this.bindDelConBtn('a.btn-del-con');
    this.bindDelItemBtn('a.btn-del-item');
    this.bindNewItemBoxClose('div.item-box');
    this.bindPlusBtn('a.btn-plus');
    this.bindAppendNewElement('div.new-item-box ul li a');
    this.bindSetPreviewVideo();
    this.bindAddAnswerBtn('a.btn-add-answer');
    this.bindDelAnswerBtn('a.btn-del-answer');
    this.bindDelImageBtn('a.btn-del-image');
    this.bindDelAudioBtn('a.btn-del-audio');
    this.initPlusBtn();
  },
  bindUploadEleVideoBtn: function(dom) {
    var self    = this;
    $(dom).click(function() {
      var $this  = $(this);
      var t    = HHJsLib.modal.confirm(
 '上传本地视频',
 ''
 + ' 

浏览您电脑里,从中选择一个视频文件。

' + ' ' + ' 从电脑上传' + ' ' + ' ' ); var uploader = HJZUploader.createVideo( '#upload-btn', { formdata: {model: 'timeline'}, }, function(response) { if(false == response.rs) { self.setDemoBoxInit($this); return HHJsLib.warn(response.message); } self.setDemoAudioInfo($this, response.data); $('#dialog-box-' + t).modal('hide'); } ); uploader.on('uploadProgress', function(file) { self.setDemoBoxLoading($this); }); return uploader; }); }, bindDelAudioBtn: function(dom) { this.bindDelFileBtn(dom, '真的要删除这个音频吗?'); }, bindDelImageBtn: function(dom) { this.bindDelFileBtn(dom, '真的要删除这个图片吗?'); }, bindDelFileBtn: function(dom, msg) { var self = this; $(dom).click(function() { var $target = $(this); var t = HHJsLib.initPopover($(this), msg); $('#btn-sure-' + t).click(function() { if(1 != $target.attr('data-new')) { $.get( queryUrl + 'timelineele/adel', {id: $target.attr('data-id')}, function(response) { if(false === response.rs) { return HHJsLib.warn(response.message); } self.delDemoFieldInfo($target); $target.popover('destroy'); } ); return; } self.delDemoFieldInfo($target); $target.popover('destroy'); }); }); }, delDemoFieldInfo: function($target) { $($target.attr('data-demo-box')).html(''); $($target.attr('data-box')).removeClass('uploaded').addClass('no-file'); $($target.attr('data-field')).attr('data-id', '').attr('data-src', ''); }, bindAddAnswerBtn: function(dom) { var self = this; $(dom).click(function() { var id = $(this).attr('data-id'); var answerHtml = eleTplMap.answerTpl.replace(/{id}/g, id); $('#answer-box-' + id).append(answerHtml); self.bindDelAnswerBtn('#answer-box-' + id + ' a.btn-del-answer'); }); }, bindDelAnswerBtn: function(dom) { var self = this; $(dom).click(function() { var $target = $(this); if(2 > $target.parent().parent().find('textarea.answer-editor').length) { return HHJsLib.warn('至少需要有一个答案!'); } var t = HHJsLib.initPopover($target, '您确定要删除这个答案吗?'); $('#btn-sure-' + t).click(function() { $target.parent().remove(); }); }); }, bindAppendNewElement: function(dom) { var self = this; $(dom).unbind('click').click(function() { var type = $(this).attr('data-type'); var heading = $(this).parent().parent().attr('data-heading-id'); if('heading' == type) { self.addNewElePartBox(); $("#new-item-box-" + heading).hide(); return; } self.addNewEleToPartBox(heading, type); }); }, addNewElePartBox: function() { var t = this.getTimestamp(); var partBoxHtml = eleTplMap.partBox.replace(/{t}/g, t); var headingHtml = this.initItemTplByType('heading', t, t); var itemHtml = this.initItemTplByType('text', t, t); var itemBoxHtml = this.initItemBoxTpl(itemHtml, t, t, 'left', 'text'); partBoxHtml = partBoxHtml.replace(/{heading}/g, headingHtml); partBoxHtml = partBoxHtml.replace(/{item}/g, itemBoxHtml); $("#main-box").append(partBoxHtml); this.bindDelItemBtn('#item-' + t + ' a.btn-del-item'); this.movePlusBtnBox(t); }, addNewEleToPartBox: function(heading, type) { var total = $('#ele-part-box-' + heading + ' div.item-ele-box').length; var side = total % 2 === 0 ? 'left' : 'right'; var t = this.getTimestamp(); var itemHtml = this.initItemTplByType(type, t, heading); var itemBoxHtml = this.initItemBoxTpl(itemHtml, heading, t, side, type); //清掉原有高度DIV $('#clearfix-' + heading).remove(); $('#ele-part-box-' + heading).find('div.eles-box').append(itemBoxHtml); //绑定Dom事件 this.bindDelItemBtn('#item-' + t + ' a.btn-del-item'); this.movePlusBtnBox(heading); this.bindNewEleUpload(type); }, bindNewEleUpload: function(type) { var self = this; switch(type) { case 'image': case 'question': case 'know': self.bindUploadModal('a.btn-upload'); break; case 'audio': self.bindUploadEleAudioBtn('a.audio-upload-btn'); self.bindDelAudioBtn('a.btn-del-audio'); break; } }, initItemTplByType: function(type, t, heading) { var itemHtml = eleTplMap[type].replace(/{t}/g, t); itemHtml = itemHtml.replace(/{sort_num}/g, this.getNewEleSortNum(heading)); return itemHtml.replace(/{headingId}/g, heading); }, initItemBoxTpl: function(content, heading, t, side, type) { var itemBoxHtml = eleTplMap.itemBox.replace(/{t}/g, t); itemBoxHtml = itemBoxHtml.replace(/{headingId}/g, heading); itemBoxHtml = itemBoxHtml.replace(/{side}/g, side); itemBoxHtml = itemBoxHtml.replace(/{content}/g, content); itemBoxHtml = itemBoxHtml.replace(/{hash}/g, hex_md5(t)); itemBoxHtml += ''; return itemBoxHtml.replace(/{type}/g, type); }, movePlusBtnBox: function(heading) { //删除原有 $('#new-item-box-' + heading).remove(); //加入新 var plusBtnHtml = eleTplMap.plusBtn.replace(/{headingId}/g, heading); $(plusBtnHtml).insertBefore('#clearfix-' + heading); var $items = $('#ele-part-box-' + heading).find('div.item-ele-box'); if($items.length < 2) { $($items[0]).find('a.btn-del-item').hide(); } else { $($items[0]).find('a.btn-del-item').show(); } //绑定事件 this.bindAppendNewElement('#new-item-box-' + heading + " ul.new-item-list-box li a"); this.bindPlusBtn('#btn-plus-' + heading); }, bindNewItemBoxClose: function(dom) { $(dom).click(function() { $('div.new-item-box').hide(); }); }, bindPlusBtn: function(dom) { $(dom).click(function(event) { $('div.new-item-box').hide(); var id = $(this).attr('data-heading-id'); $('#new-item-box-' + id + ' div.new-item-box').removeClass('hide').attr('data-show', '1').show(); event.preventDefault(); }); }, initPlusBtn: function() { var self = this; $('div.ele-part-box').each(function() { var dataId = $(this).attr('data-heading'); self.movePlusBtnBox(dataId); }); }, bindDelItemBtn: function(dom) { var self = this; $(dom).click(function() { var $target = $(this); var t = HHJsLib.initPopover($target, '您确定要删除这项吗?'); var id = $target.attr('data-id'); var heading = $('#item-' + id).attr('data-heading-id'); $('#btn-sure-' + t).click(function() { if(1 == $target.attr('data-new')) { $.get( queryUrl + 'timelineele/adel', {id: $target.attr('data-id')}, function(response) { if(false === response.rs) { return HHJsLib.warn(response.message); } $('#item-' + id).fadeOut('fast', function() { $(this).remove(); self.movePlusBtnBox(heading); self.reArrangeItem(heading); }); $target.popover('destroy'); } ); return; } $target.popover('destroy'); $('#item-' + id).fadeOut('fast', function() { $(this).remove(); self.movePlusBtnBox(heading); self.reArrangeItem(heading); }); }); }); }, reArrangeItem: function(heading) { var rank = 1; $('#ele-part-box-' + heading).find('div.item-ele-box').each(function() { if(rank % 2 === 0) { $(this).removeClass('pull-left item-left') .addClass('pull-right item-right'); } else { $(this).removeClass('pull-right item-right') .addClass('pull-left item-left'); } rank ++; }); }, bindNewConBtn: function() { var self = this; $('#btn-new-con-item').click(function() { var t = self.getTimestamp(); var conItemHtml = eleTplMap.conItemTpl.replace(/{t}/g, t); $('#conclusion-box').append(conItemHtml); self.bindDelConBtn('#btn-del-con-' + t); self.bindUploadModal('a.btn-upload'); }); }, bindDelConBtn: function(dom) { var self = this; $(dom).click(function() { var $target = $(this); var t = HHJsLib.initPopover($target, '您确定要删除这个结论吗?'); var id = $target.attr('data-id'); $('#btn-sure-' + t).click(function() { if(1 == $target.attr('data-new')) { $.get( queryUrl + 'timelineele/adel', {id: $target.attr('data-id')}, function(response) { if(false === response.rs) { return HHJsLib.warn(response.message); } $('#item-con-' + id).fadeOut('fast', function() { $(this).remove(); }); $target.popover('destroy'); } ); return; } $target.popover('destroy'); $('#item-con-' + id).fadeOut('fast', function() { $(this).remove(); }); }); }); }, getNewEleSortNum: function(heading) { return parseInt(this.getMaxSortNum(heading)) + 1; }, getMaxSortNum: function(heading) { var sortNums = []; $('.ele-sort-' + heading).each(function() { sortNums.push($(this).val()); }); sortNums = sortNums.sort(function(a, b) { if (a === b) { return 0; } if (typeof a === typeof b) { return a > b ? -1 : 1; } return typeof a > typeof b ? -1 : 1; }); return sortNums[0] == null ? 0 : sortNums[0]; }, bindUploadEleImageBtn: function() { this.bindUploadModal('a.btn-upload'); }, bindUploadEleAudioBtn: function(dom) { var self = this; $(dom).click(function() { var $this = $(this); var t = HHJsLib.modal.confirm( '上传音频', '' + '

浏览您电脑里,从中选择一个音频文件。

' + ' ' + ' 从电脑上传' + ' ' + ' ' ); var uploader = HJZUploader.createAudio( '#upload-btn', { formdata: {model: 'timeline'}, }, function(response) { if(false == response.rs) { self.setDemoBoxInit($this); return HHJsLib.warn(response.message); } self.setDemoAudioInfo($this, response.data); $('#dialog-box-' + t).modal('hide'); } ); uploader.on('uploadProgress', function(file) { self.setDemoBoxLoading($this); }); return uploader; }); }, setDemoAudioInfo: function($target, data) { var audioHtml = ''; $($target.attr('data-demo-box')).html(audioHtml).show(); $($target.attr('data-field')).attr('data-id', data.id).attr('data-src', data.src); }, bindUploadModal: function(dom) { var self = this; $(dom).unbind('click').click(function() { var $this = $(this); var t = HHJsLib.modal.confirm( '上传图片', '' + '

浏览您电脑里的图片,从中选择一张。

' + '' + ' 从电脑上传' + ' ' + ' ' ); var uploader = HJZUploader.createImage( '#upload-btn', { formdata: {model: 'timeline'} }, function(response) { if(false == response.rs) { self.setDemoBoxInit($this); return HHJsLib.warn(response.message); } var imgHtml = ''; $($this.attr('data-demo-box')).html(imgHtml).show(); $($this.attr('data-field')).val(response.data.id).attr('data-src', response.data.src); $('#dialog-box-' + t).modal('hide'); } ); uploader.on('uploadProgress', function(file) { self.setDemoBoxLoading($this); }); self.bindDelImageBtn('a.btn-del-image'); return uploader; }); }, bindPreviewBtn: function() { var self = this; $('#edit-btn, #preview-btn').click(function() { try{ self.verifybaseInfo(); self.verifyEleInfo(); self.verifyConclusionInfo(); $('#timeline-form').submit(); }catch(e) { return HHJsLib.warn(e); } }); }, verifybaseInfo: function() { HHJsLib.isEmptyByDom('#image-path', '时间轴大图'); HHJsLib.isEmptyByDom('#cover', '时间轴封面'); HHJsLib.isEmptyByDom('#name', '标题'); HHJsLib.isEmptyByDom('#description', '描述'); }, verifyEleInfo: function() { this.verifyHeaderEleInfo(); this.verifyTextEleInfo(); this.verifyImageEleInfo(); this.verifyVideoEleInfo(); this.verifyAudioEleInfo(); this.verifyQuestionEleInfo(); this.verifyKnowEleInfo(); }, verifyHeaderEleInfo: function() { $('div.item-heading-box').each(function() { HHJsLib.isEmpty($(this).find('textarea').val(), '头条内容'); }); }, verifyTextEleInfo: function() { $('div.item-text-box').each(function() { HHJsLib.isEmptyByDom('#ele-text-' + $(this).attr('data-id'), '文本内容元素'); }); }, verifyImageEleInfo: function() { $('div.item-image-box').each(function() { HHJsLib.isEmptyByDom('#ele-image-hash-' + $(this).attr('data-id'), '图片地址'); HHJsLib.isEmptyByDom('#ele-image-content-' + $(this).attr('data-id'), '图片介绍'); }); }, verifyVideoEleInfo: function() { $('div.item-video-box').each(function() { HHJsLib.isEmptyByDom('#ele-video-hash-' + $(this).attr('data-id'), '视频地址'); HHJsLib.isEmptyByDom('#ele-video-content-' + $(this).attr('data-id'), '视频介绍'); }); }, verifyAudioEleInfo: function() { $('div.item-audio-box').each(function() { HHJsLib.isEmptyByDom('#ele-audio-hash-' + $(this).attr('data-id'), '音频地址'); HHJsLib.isEmptyByDom('#ele-audio-content-' + $(this).attr('data-id'), '音频介绍'); }); }, verifyQuestionEleInfo: function() { $('div.item-question-box').each(function() { HHJsLib.isEmptyByDom('#ele-question-content-' + $(this).attr('data-id'), '问题内容'); HHJsLib.isEmptyByDom('#ele-question-extend-' + $(this).attr('data-id'), '问题答案解释'); HHJsLib.isEmpty(answerLen, '问题答案'); $('#answer-box-' + $(this).attr('data-id')).find('textarea').each(function() { HHJsLib.isEmpty($(this).val(), '问题答案'); }); }); }, verifyKnowEleInfo: function() { $('div.item-know-box').each(function() { HHJsLib.isEmptyByDom('#ele-know-hash-' + $(this).attr('data-id'), '知道图片地址'); HHJsLib.isEmptyByDom('#ele-know-content-' + $(this).attr('data-id'), '知道介绍'); }); }, verifyConclusionInfo: function() { var length = $('#conclusion-box div.item-con').length; HHJsLib.isEmpty(length, '总结'); $('#conclusion-box div.item-con').each(function() { var dataId = $(this).attr('data-id'); HHJsLib.isEmptyByDom('#ele-con-hash-' + dataId, '总结图片'); HHJsLib.isEmptyByDom('#ele-con-content-' + dataId, '总结详情'); }); }, bindDownloadEleAudioBtn: function() { var self = this; $('a.download-audio-btn').click(function() { var $this = $(this); try{ HHJsLib.isEmptyByDom("#item-audio-upload-hash-" + $this.attr('data-id'), '下载地址'); var url = $("#item-audio-upload-hash-" + $this.attr('data-id')).val(); if('mp3' != url.substring(url.lastIndexOf('.') + 1).toLowerCase()) { return HHJsLib.warn('格式不支持,必须是Mp3格式!'); } var t = HHJsLib.modal.info( '下载音频', '

正在下载音频文件中,请稍等...

' ); self.setDemoBoxLoading($this); $.getJSON( siteUrl + 'index.php/public/resource/adownload', {url: encodeURIComponent(url)}, function(response) { if(false == response.rs) { self.setDemoBoxInit($this); return HHJsLib.warn(response.message); } $('#dialog-box-' + t).modal('hide'); self.setDemoAudioInfo($this, response.data); } ); } catch(e) { return HHJsLib.warn(e); } }); }, setDemoBoxLoading: function($target) { $($target.attr('data-box')).removeClass('no-file').addClass('uploaded'); $($target.attr('data-file-box')).html(''); }, setDemoBoxInit: function($target) { $($target.attr('data-box')).removeClass('uploaded').addClass('no-file'); $($target.attr('data-file-box')).html(''); }, bindSetPreviewVideo: function() { $('input.ele-video').change(function() { var url = $(this).val(); if(url != '') { if('swf' != url.substring(url.lastIndexOf('.') +1 ).toLowerCase()) { return HHJsLib.warn('视频地址不合法,请输入有效的在线观看Flash地址!'); } var previewHtml = ''; $($(this).attr('data-demo-box')).html(previewHtml); } }); }, bindDelEleBtnFormEdit: function() { this.bindDelUploadImgBtn(); }, getTimestamp: function() { return (new Date()).getTime(); } });

以上所述就是本文给大家分享的全部内容了,希望能够对大家学习javascript有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/103185.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号