前幾天板上大神們教了 mysql 簡化方式(同個查詢)
現(xiàn)在想學(xué)些 JS 簡化方式
前提是在不動到html的情況下是否可以簡化?
例如
$('.status-btn').mouseenter(function(e) {
var public_order_id = e.currentTarget.dataset.public_order_id;
var id = e.currentTarget.dataset.id;
var type = e.currentTarget.dataset.type;
$('.'+type+'-'+public_order_id+', .status-sublist-layout-after-btn').show();
});
$('.status-layout').mouseleave(function(e) {
var public_order_id = e.currentTarget.dataset.public_order_id;
var id = e.currentTarget.dataset.id;
var type = e.currentTarget.dataset.type;
$('.'+type+'-'+public_order_id+', .status-sublist-layout-after-btn').hide();
});
$('.status-sublist-layout-after-btn').click(function(event) {
$('.admin-status-submenu-layout, .admin-status-submenu-layout-large, .status-sublist-layout-after-btn').hide();
});
這一段比較特別,
有blog-menu, manager-menu, log-menu, setting-menu
只是替換成 quick-menu ,其他都一樣
$('.quick-menu').click(function(e) {
$('.quick-layout, .blog-layout, .manager-layout, .log-layout, .setting-layout').hide();
$('.quick-layout').show();
});
$('.quick-layout').mouseleave(function(e) {
$('.quick-layout').hide();
});
$('.blog-menu').click(function(e) {
$('.quick-layout, .blog-layout, .manager-layout, .log-layout, .setting-layout').hide();
$('.blog-layout').show();
});
$('.blog-layout').mouseleave(function(e) {
$('.blog-layout').hide();
});
......
這是我目前想到的簡易方式,已經(jīng)盡力.....
不過大神們肯定還有方法.....
學(xué)會了我就能套用到其他function,受益良多!如果可以的話幫我打一下原理
感謝大神指教!
沒有Html結(jié)構(gòu)的前提下,前面的腳本暫無多大優(yōu)化空間。
主要是后面那段“特殊”的腳本必須優(yōu)化。 假設(shè)你的html結(jié)構(gòu)是這樣的:
<div>
<div class='quick-menu'></div>
<div class='blog-menu'></div>
<div class='manager-menu'></div>
<div class='log-menu'></div>
<div class='setting-menu'></div>
</div>
<div>
<div class='quick-layout'></div>
<div class='blog-layout'></div>
<div class='manager-layout'></div>
<div class='log-layout'></div>
<div class='setting-layout'></div>
</div>
在不動你的html情況下這樣改
$('.quick-menu, .blog-menu, .manager-menu, .log-menu, .setting-menu').click(function(e) {
var menuName = $(this).attr('class').match(/(\w+)\-menu/)[1];
$('.' + menuName +'-layout').show().siblings().hide();
});
$('.quick-layout, .blog-layout, .manager-layout, .log-layout, .setting-layout').mouseleave(function(e) {
$(this).hide();
});
//事件dom綁定關(guān)系映射,順便抽象了一下你方法內(nèi)部邏輯
var maps={
'.status-btn mouseenter show':'toggle',
'.status-layout mouseenter hide':'toggle',
'.status-sublist-layout-after-btn click hide':'clickHide',
'.quick-menu click .quick-layout':'menuToggle',
'.blog-menu click .blog-layout':'menuToggle'
'.quick-layout mouseleave hide':'layOutMsLvHide',
'.blog-layout mouseleave hide':'layOutMsLvHide'
}
//事件綁定
function _delegate(name, selector, func,vis) {
$(document).on(name, selector, function (e) {
func.apply(null,[e,$(this),vis])
});
}
//循環(huán)解析map,進行綁定
function _scanEventsMap (maps) {
var bind = _delegate;
for (var keys in maps) {
if (maps.hasOwnProperty(keys)) {
var matchs = keys.split(' ');
if (typeof maps[keys] === 'string') {
maps[keys] = this[maps[keys]];
}
bind(matchs[0], matchs[1], maps[keys].bind(this),matchs[3]);
}
}
}
function toggle(e,jqObj,vis){
var public_order_id = e.currentTarget.dataset.public_order_id;
var id = e.currentTarget.dataset.id;
var type = e.currentTarget.dataset.type;
$('.'+type+'-'+public_order_id+', .status-sublist-layout-after-btn')[vis]();
}
function clickHide(e,jqObj,vis){
$('.admin-status-submenu-layout, .admin-status-submenu-layout-large, .status-sublist-layout-after-btn')[vis]();
}
function menuToggle(e,jqObj,el){
$('.quick-layout, .blog-layout, .manager-layout, .log-layout, .setting-layout').hide();
$(el).show();
}
function layOutMsLvHide(e,jqObj,vis){
jqObj[vis]();
}
$(function(){
_scanEventsMap(maps);
})
希望能幫到你。
更完善的實現(xiàn)可以看看我的github
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。